import { Prisma } from "@prisma/client";
import { PrismaService } from "../../infra/prisma/prisma.service";
import { CreateRentalDto } from "./dto/create-rental.dto";
import { RentalQueryDto } from "./dto/rental-query.dto";
import { UpdateRentalDto } from "./dto/update-rental.dto";
export declare class RentalsService {
    private readonly prisma;
    constructor(prisma: PrismaService);
    private calculateDays;
    private calculateItemTotal;
    private generateFinancialEntries;
    findAll(companyId: string, query: RentalQueryDto): Promise<{
        items: any[];
        total: number;
        page: number;
        limit: number;
        totalPages: number;
    }>;
    private mapRentalWithDetails;
    getStats(companyId: string): Promise<{
        total: number;
        inProgress: number;
        quote: number;
        finished: number;
        reserved: number;
        canceled: number;
        totalRevenue: number;
    }>;
    findOne(companyId: string, id: string): Promise<any>;
    create(companyId: string, dto: CreateRentalDto): Promise<any>;
    update(companyId: string, id: string, dto: UpdateRentalDto): Promise<any>;
    rebuildFinancials(companyId: string, id: string): Promise<{
        message: string;
        receivables?: undefined;
    } | {
        message: string;
        receivables: {
            id: string;
            companyId: string;
            customerId: string;
            status: import(".prisma/client").$Enums.FinancialStatus;
            createdAt: Date;
            updatedAt: Date;
            rentalId: string | null;
            description: string;
            amount: Prisma.Decimal;
            dueDate: Date;
            paidAt: Date | null;
        }[];
    }>;
    rebuildAllFinancials(companyId: string): Promise<{
        message: string;
        results: any[];
    }>;
    remove(companyId: string, id: string): Promise<{
        id: string;
        companyId: string;
        customerId: string;
        code: string;
        startDate: Date;
        endDate: Date;
        subtotal: Prisma.Decimal;
        discount: Prisma.Decimal;
        freight: Prisma.Decimal;
        depositAmount: Prisma.Decimal;
        paymentMethod: string | null;
        installmentsCount: number | null;
        total: Prisma.Decimal;
        operator: string | null;
        notes: string | null;
        status: import(".prisma/client").$Enums.RentalStatus;
        createdAt: Date;
        updatedAt: Date;
    }>;
}
