import { Prisma } from '../generated/prisma/index';
import { PrismaService } from '../prisma/prisma.service';
import { ImportCommitDto, ImportPreviewDto, ProcessQuery, ProcessWriteDto } from './process-costing.dto';
export declare class ProcessCostingService {
    private readonly prisma;
    constructor(prisma: PrismaService);
    list(query: ProcessQuery): Promise<{
        items: {
            id: string;
            status: string;
            createdAt: Date;
            updatedAt: Date;
            inch: string | null;
            processCode: string;
            processName: string;
            processType: string;
            machineCost: number;
            materialCost: number;
            coatingCost: number;
            totalCost: number;
            createdBy: string | null;
            selectedItems: Prisma.JsonValue;
            materialInput: Prisma.JsonValue;
            machineInput: Prisma.JsonValue;
            coatingInput: Prisma.JsonValue;
        }[];
        meta: {
            total: number;
            page: number;
            pageSize: number;
            totalPages: number;
        };
        filterOptions: {
            processTypes: string[];
            statuses: string[];
            inches: string[];
            holders: {
                id: string;
                sourceId: number | null;
                status: string;
                createdAt: Date;
                updatedAt: Date;
                holderCode: string;
                holderName: string;
                holderInchValue: number;
                holderInch: string;
                bodyName: string;
                bodyCode: string;
                yorkeName: string | null;
                yorkeCode: string | null;
                yorkeLoad: number | null;
            }[];
            wheels: {
                id: string;
                sourceId: number | null;
                wheelInchValue: number;
                wheelName: string;
                wheelCode: string;
                wheelSize: string;
                wheelSizeCode: string;
                wheelType: string;
                wheelTypeCode: string;
                bearingType: string;
                bearingCode: string;
                dustCoverName: string;
                dustCoverCode: string;
                wheelColor: string;
                wheelColorCode: string;
                dynamicLoadCarryCapacity: string;
                dynamicLoadCarryCapacityCode: string;
                wheelTypeSubName: string;
                wheelTypeSubNameCode: string;
                status: string;
                createdAt: Date;
                updatedAt: Date;
            }[];
            materials: {
                categoryName: string;
                uomCode: string;
                uom: {
                    id: string;
                    status: string;
                    createdAt: Date;
                    updatedAt: Date;
                    uomName: string;
                    uomCode: string;
                    measureType: string;
                    conversionFactor: number;
                } | null;
                category: {
                    id: string;
                    status: string;
                    createdAt: Date;
                    updatedAt: Date;
                    description: string | null;
                    categoryCode: string | null;
                    categoryName: string;
                } | null;
                id: string;
                status: string;
                createdAt: Date;
                updatedAt: Date;
                description: string | null;
                costPerUnit: number;
                materialCode: string;
                materialName: string;
                categoryId: string | null;
                subType: string | null;
                uomId: string | null;
                hsnCode: string | null;
                taxCategory: string | null;
                gstPercent: number;
                vendorId: string | null;
                currency: string;
                batchNumber: string | null;
                qualityGrade: string | null;
                specificationStandard: string | null;
                storageConditions: string | null;
                currentStock: number;
                reorderLevel: number;
                reorderQuantity: number;
                stockType: string;
                lossWastePercent: number;
                accountLevelLink: string | null;
                imagePath: string | null;
            }[];
            machines: {
                id: string;
                status: string;
                createdAt: Date;
                updatedAt: Date;
                name: string | null;
                moduleType: string;
                machineryName: string;
                machineryNumber: string;
                eachHp: number;
                hourRate: number;
                code: string | null;
                tonnage: number | null;
                noOfPlatens: number | null;
                platenSize: string | null;
                powerPackHp: number | null;
                heaterCapacity: number | null;
                heaterPerPlaten: number | null;
                noOfPlates: number | null;
                coolingTower: number | null;
                powerPack: number | null;
                heaterPack: number | null;
                coolingTowerCost: number | null;
            }[];
            settings: {
                createdAt: Date;
                updatedAt: Date;
                key: string;
                smtpHost: string | null;
                smtpPort: number;
                smtpSecure: boolean;
                smtpUsername: string | null;
                smtpPassword: string | null;
                defaultSenderEmail: string | null;
                defaultSenderName: string | null;
                defaultCc: string | null;
                billHeader: string | null;
                billFooter: string | null;
                logoPath: string | null;
                processCodeAutoGenerate: boolean;
                processCodePrefix: string;
            };
            coatingTypes: string[];
        };
    }>;
    detail(id: string): Promise<{
        id: string;
        status: string;
        createdAt: Date;
        updatedAt: Date;
        inch: string | null;
        processCode: string;
        processName: string;
        processType: string;
        machineCost: number;
        materialCost: number;
        coatingCost: number;
        totalCost: number;
        createdBy: string | null;
        selectedItems: Prisma.JsonValue;
        materialInput: Prisma.JsonValue;
        machineInput: Prisma.JsonValue;
        coatingInput: Prisma.JsonValue;
    }>;
    create(dto: ProcessWriteDto): Promise<{
        id: string;
        status: string;
        createdAt: Date;
        updatedAt: Date;
        inch: string | null;
        processCode: string;
        processName: string;
        processType: string;
        machineCost: number;
        materialCost: number;
        coatingCost: number;
        totalCost: number;
        createdBy: string | null;
        selectedItems: Prisma.JsonValue;
        materialInput: Prisma.JsonValue;
        machineInput: Prisma.JsonValue;
        coatingInput: Prisma.JsonValue;
    }>;
    update(id: string, dto: ProcessWriteDto): Promise<{
        id: string;
        status: string;
        createdAt: Date;
        updatedAt: Date;
        inch: string | null;
        processCode: string;
        processName: string;
        processType: string;
        machineCost: number;
        materialCost: number;
        coatingCost: number;
        totalCost: number;
        createdBy: string | null;
        selectedItems: Prisma.JsonValue;
        materialInput: Prisma.JsonValue;
        machineInput: Prisma.JsonValue;
        coatingInput: Prisma.JsonValue;
    }>;
    delete(id: string): Promise<{
        deleted: boolean;
    }>;
    options(): Promise<{
        processTypes: string[];
        statuses: string[];
        inches: string[];
        holders: {
            id: string;
            sourceId: number | null;
            status: string;
            createdAt: Date;
            updatedAt: Date;
            holderCode: string;
            holderName: string;
            holderInchValue: number;
            holderInch: string;
            bodyName: string;
            bodyCode: string;
            yorkeName: string | null;
            yorkeCode: string | null;
            yorkeLoad: number | null;
        }[];
        wheels: {
            id: string;
            sourceId: number | null;
            wheelInchValue: number;
            wheelName: string;
            wheelCode: string;
            wheelSize: string;
            wheelSizeCode: string;
            wheelType: string;
            wheelTypeCode: string;
            bearingType: string;
            bearingCode: string;
            dustCoverName: string;
            dustCoverCode: string;
            wheelColor: string;
            wheelColorCode: string;
            dynamicLoadCarryCapacity: string;
            dynamicLoadCarryCapacityCode: string;
            wheelTypeSubName: string;
            wheelTypeSubNameCode: string;
            status: string;
            createdAt: Date;
            updatedAt: Date;
        }[];
        materials: {
            categoryName: string;
            uomCode: string;
            uom: {
                id: string;
                status: string;
                createdAt: Date;
                updatedAt: Date;
                uomName: string;
                uomCode: string;
                measureType: string;
                conversionFactor: number;
            } | null;
            category: {
                id: string;
                status: string;
                createdAt: Date;
                updatedAt: Date;
                description: string | null;
                categoryCode: string | null;
                categoryName: string;
            } | null;
            id: string;
            status: string;
            createdAt: Date;
            updatedAt: Date;
            description: string | null;
            costPerUnit: number;
            materialCode: string;
            materialName: string;
            categoryId: string | null;
            subType: string | null;
            uomId: string | null;
            hsnCode: string | null;
            taxCategory: string | null;
            gstPercent: number;
            vendorId: string | null;
            currency: string;
            batchNumber: string | null;
            qualityGrade: string | null;
            specificationStandard: string | null;
            storageConditions: string | null;
            currentStock: number;
            reorderLevel: number;
            reorderQuantity: number;
            stockType: string;
            lossWastePercent: number;
            accountLevelLink: string | null;
            imagePath: string | null;
        }[];
        machines: {
            id: string;
            status: string;
            createdAt: Date;
            updatedAt: Date;
            name: string | null;
            moduleType: string;
            machineryName: string;
            machineryNumber: string;
            eachHp: number;
            hourRate: number;
            code: string | null;
            tonnage: number | null;
            noOfPlatens: number | null;
            platenSize: string | null;
            powerPackHp: number | null;
            heaterCapacity: number | null;
            heaterPerPlaten: number | null;
            noOfPlates: number | null;
            coolingTower: number | null;
            powerPack: number | null;
            heaterPack: number | null;
            coolingTowerCost: number | null;
        }[];
        settings: {
            createdAt: Date;
            updatedAt: Date;
            key: string;
            smtpHost: string | null;
            smtpPort: number;
            smtpSecure: boolean;
            smtpUsername: string | null;
            smtpPassword: string | null;
            defaultSenderEmail: string | null;
            defaultSenderName: string | null;
            defaultCc: string | null;
            billHeader: string | null;
            billFooter: string | null;
            logoPath: string | null;
            processCodeAutoGenerate: boolean;
            processCodePrefix: string;
        };
        coatingTypes: string[];
    }>;
    calculate(dto: ProcessWriteDto): Promise<{
        material: {
            materialId: string;
            materialName: string;
            category: string;
            unitPrice: number;
            weightKg: number;
            quantity: number;
            total: number;
            notes: string[];
        };
        machine: {
            processName: string;
            machineId: string;
            productionCostPerPiece: number;
            cuttingCost: number;
            galvanizingCost: number;
            total: number;
        };
        coating: {
            coatingType: string;
            total: number;
            basis: string;
            mode?: undefined;
            weightKg?: undefined;
            materialTotal?: undefined;
        } | {
            coatingType: string;
            mode: string;
            weightKg: number;
            materialTotal: number;
            total: number;
            basis?: undefined;
        };
        summary: {
            materialCost: number;
            machineCost: number;
            coatingCost: number;
            totalCost: number;
        };
    }>;
    export(query: ProcessQuery & {
        format?: string;
    }): Promise<import("../common/tabular-file.util").ExportFile>;
    sample(format?: string): import("../common/tabular-file.util").ExportFile;
    previewImport(dto: ImportPreviewDto): {
        fileName: string;
        rows: {
            rowNumber: number;
            data: {
                processCode: string;
                processName: string;
                processType: string;
                inch: string;
                materialCost: string;
                machineCost: string;
                coatingCost: string;
                totalCost: string;
                status: string;
            };
            valid: boolean;
            errors: string[];
        }[];
        total: number;
        valid: number;
        invalid: number;
    };
    commitImport(dto: ImportCommitDto): Promise<{
        created: number;
        failed: number;
        errors: string[];
    }>;
    private validate;
    private nextProcessCode;
    private calculateMaterial;
    private calculateMachine;
    private calculateCoating;
    private buildWhere;
}
