import { Prisma } from "@prisma/client";
import { PrismaService } from "../../infra/prisma/prisma.service";
import { CreateEquipmentDto } from "./dto/create-equipment.dto";
import { EquipmentQueryDto } from "./dto/equipment-query.dto";
import { UpdateEquipmentDto } from "./dto/update-equipment.dto";
export declare class EquipmentService {
    private readonly prisma;
    constructor(prisma: PrismaService);
    findAll(companyId: string, query: EquipmentQueryDto): Promise<{
        items: ({
            _count: {
                serviceOrders: number;
                rentalItems: number;
            };
            category: {
                id: string;
                createdAt: Date;
                updatedAt: Date;
                companyId: string;
                name: string;
                description: string | null;
                color: string;
            };
            photos: {
                id: string;
                createdAt: Date;
                equipmentId: string;
                isPrimary: boolean;
                url: string;
                caption: string | null;
            }[];
        } & {
            id: string;
            status: import(".prisma/client").$Enums.EquipmentStatus;
            createdAt: Date;
            updatedAt: Date;
            companyId: string;
            code: string;
            notes: string | null;
            categoryId: string;
            assetTag: string;
            brand: string;
            model: string;
            year: number | null;
            serialNumber: string | null;
            acquisitionValue: Prisma.Decimal;
            dailyRate: Prisma.Decimal;
            weeklyRate: Prisma.Decimal;
            monthlyRate: Prisma.Decimal;
            hourMeter: Prisma.Decimal | null;
            mileage: Prisma.Decimal | null;
            qrCode: string | null;
        })[];
        total: number;
        page: number;
        limit: number;
        totalPages: number;
    }>;
    getStats(companyId: string): Promise<{
        total: number;
        available: number;
        rented: number;
        maintenance: number;
        reserved: number;
        totalAcquisitionValue: number;
    }>;
    getCategories(companyId: string): Promise<{
        id: string;
        createdAt: Date;
        updatedAt: Date;
        companyId: string;
        name: string;
        description: string | null;
        color: string;
    }[]>;
    findOne(companyId: string, id: string): Promise<{
        serviceOrders: {
            id: string;
            status: import(".prisma/client").$Enums.MaintenanceStatus;
            companyId: string;
            title: string;
            code: string;
            equipmentId: string;
            description: string | null;
            cost: Prisma.Decimal;
            openedAt: Date;
            closedAt: Date | null;
        }[];
        _count: {
            serviceOrders: number;
            rentalItems: number;
        };
        category: {
            id: string;
            createdAt: Date;
            updatedAt: Date;
            companyId: string;
            name: string;
            description: string | null;
            color: string;
        };
        photos: {
            id: string;
            createdAt: Date;
            equipmentId: string;
            isPrimary: boolean;
            url: string;
            caption: string | null;
        }[];
        rentalItems: ({
            rental: {
                id: string;
                status: import(".prisma/client").$Enums.RentalStatus;
                code: string;
                startDate: Date;
                endDate: Date;
                customer: {
                    id: string;
                    name: string;
                };
            };
        } & {
            id: string;
            total: Prisma.Decimal;
            equipmentId: string;
            rentalId: string;
            dailyRate: Prisma.Decimal;
            quantity: number;
        })[];
    } & {
        id: string;
        status: import(".prisma/client").$Enums.EquipmentStatus;
        createdAt: Date;
        updatedAt: Date;
        companyId: string;
        code: string;
        notes: string | null;
        categoryId: string;
        assetTag: string;
        brand: string;
        model: string;
        year: number | null;
        serialNumber: string | null;
        acquisitionValue: Prisma.Decimal;
        dailyRate: Prisma.Decimal;
        weeklyRate: Prisma.Decimal;
        monthlyRate: Prisma.Decimal;
        hourMeter: Prisma.Decimal | null;
        mileage: Prisma.Decimal | null;
        qrCode: string | null;
    }>;
    create(companyId: string, dto: CreateEquipmentDto): Promise<{
        category: {
            id: string;
            createdAt: Date;
            updatedAt: Date;
            companyId: string;
            name: string;
            description: string | null;
            color: string;
        };
    } & {
        id: string;
        status: import(".prisma/client").$Enums.EquipmentStatus;
        createdAt: Date;
        updatedAt: Date;
        companyId: string;
        code: string;
        notes: string | null;
        categoryId: string;
        assetTag: string;
        brand: string;
        model: string;
        year: number | null;
        serialNumber: string | null;
        acquisitionValue: Prisma.Decimal;
        dailyRate: Prisma.Decimal;
        weeklyRate: Prisma.Decimal;
        monthlyRate: Prisma.Decimal;
        hourMeter: Prisma.Decimal | null;
        mileage: Prisma.Decimal | null;
        qrCode: string | null;
    }>;
    update(companyId: string, id: string, dto: UpdateEquipmentDto): Promise<{
        category: {
            id: string;
            createdAt: Date;
            updatedAt: Date;
            companyId: string;
            name: string;
            description: string | null;
            color: string;
        };
    } & {
        id: string;
        status: import(".prisma/client").$Enums.EquipmentStatus;
        createdAt: Date;
        updatedAt: Date;
        companyId: string;
        code: string;
        notes: string | null;
        categoryId: string;
        assetTag: string;
        brand: string;
        model: string;
        year: number | null;
        serialNumber: string | null;
        acquisitionValue: Prisma.Decimal;
        dailyRate: Prisma.Decimal;
        weeklyRate: Prisma.Decimal;
        monthlyRate: Prisma.Decimal;
        hourMeter: Prisma.Decimal | null;
        mileage: Prisma.Decimal | null;
        qrCode: string | null;
    }>;
    remove(companyId: string, id: string): Promise<{
        id: string;
        status: import(".prisma/client").$Enums.EquipmentStatus;
        createdAt: Date;
        updatedAt: Date;
        companyId: string;
        code: string;
        notes: string | null;
        categoryId: string;
        assetTag: string;
        brand: string;
        model: string;
        year: number | null;
        serialNumber: string | null;
        acquisitionValue: Prisma.Decimal;
        dailyRate: Prisma.Decimal;
        weeklyRate: Prisma.Decimal;
        monthlyRate: Prisma.Decimal;
        hourMeter: Prisma.Decimal | null;
        mileage: Prisma.Decimal | null;
        qrCode: string | null;
    }>;
}
