import { PurchaseRepository } from "../repositories/PurchaseRepository.js";
import { Prisma } from "../generated/prisma/client.js";
export declare class PurchaseService {
    private readonly purchaseRepository;
    constructor(purchaseRepository?: PurchaseRepository);
    getLotAvailability(lotNo: string): Promise<{
        wholesaleRemaining: number;
        wholesaleBagsRemaining: number;
        retailRemaining: number;
        totalRemaining: number;
        isWholesaleDepleted: boolean;
        isFullyDepleted: boolean;
    }>;
    checkLotAvailability(lotNo: string, vegetableId?: string | bigint): Promise<{
        isAvailable: boolean;
        message: string;
    }>;
    isLotAvailableForNewPurchase(lotNo: string): Promise<boolean>;
    createPurchase(data: any): Promise<{
        unit: import("../generated/prisma/index.js").$Enums.PurchaseUnit;
        id: bigint;
        status: import("../generated/prisma/index.js").$Enums.PurchaseStatus;
        createdAt: Date;
        updatedAt: Date;
        createdBy: bigint | null;
        deletedAt: Date | null;
        supplierId: bigint | null;
        remarks: string | null;
        purchaseDate: Date;
        billNo: string | null;
        cashSupplierName: string | null;
        vegetableId: bigint;
        lotNo: string;
        purchaseType: import("../generated/prisma/index.js").$Enums.PurchaseType;
        rateType: import("../generated/prisma/index.js").$Enums.RateType;
        bags: Prisma.Decimal;
        weightPerBag: Prisma.Decimal | null;
        quantity: Prisma.Decimal;
        ratePerUnit: Prisma.Decimal;
        freight: Prisma.Decimal;
        extraFreight: Prisma.Decimal;
        associationFee: Prisma.Decimal;
        unloadingFee: Prisma.Decimal;
        miscellaneousFee: Prisma.Decimal;
        totalFreight: Prisma.Decimal;
        transportFee: Prisma.Decimal;
        loadingUnloadingFee: Prisma.Decimal;
        otherCharges: Prisma.Decimal;
        thaiyalCharges: Prisma.Decimal;
        extraCharges: Prisma.Decimal;
        goodsTotal: Prisma.Decimal;
        surchargeTotal: Prisma.Decimal;
        costPerUnit: Prisma.Decimal;
        grandTotal: Prisma.Decimal;
        dateOfDespatch: Date | null;
        arrivalDate: Date | null;
        placeOfDespatch: string | null;
        placeOfArrival: string | null;
        truckNo: string | null;
        agentName: string | null;
        advanceAmount: Prisma.Decimal;
        balanceAmount: Prisma.Decimal;
        remainingQuantity: Prisma.Decimal;
        remainingBags: Prisma.Decimal;
        closedAt: Date | null;
    }>;
    bulkCreatePurchases(purchases: any[]): Promise<{
        created: any[];
        errors: {
            index: number;
            lotNo: string;
            message: string;
        }[];
    }>;
    closePurchase(id: bigint): Promise<{
        unit: import("../generated/prisma/index.js").$Enums.PurchaseUnit;
        id: bigint;
        status: import("../generated/prisma/index.js").$Enums.PurchaseStatus;
        createdAt: Date;
        updatedAt: Date;
        createdBy: bigint | null;
        deletedAt: Date | null;
        supplierId: bigint | null;
        remarks: string | null;
        purchaseDate: Date;
        billNo: string | null;
        cashSupplierName: string | null;
        vegetableId: bigint;
        lotNo: string;
        purchaseType: import("../generated/prisma/index.js").$Enums.PurchaseType;
        rateType: import("../generated/prisma/index.js").$Enums.RateType;
        bags: Prisma.Decimal;
        weightPerBag: Prisma.Decimal | null;
        quantity: Prisma.Decimal;
        ratePerUnit: Prisma.Decimal;
        freight: Prisma.Decimal;
        extraFreight: Prisma.Decimal;
        associationFee: Prisma.Decimal;
        unloadingFee: Prisma.Decimal;
        miscellaneousFee: Prisma.Decimal;
        totalFreight: Prisma.Decimal;
        transportFee: Prisma.Decimal;
        loadingUnloadingFee: Prisma.Decimal;
        otherCharges: Prisma.Decimal;
        thaiyalCharges: Prisma.Decimal;
        extraCharges: Prisma.Decimal;
        goodsTotal: Prisma.Decimal;
        surchargeTotal: Prisma.Decimal;
        costPerUnit: Prisma.Decimal;
        grandTotal: Prisma.Decimal;
        dateOfDespatch: Date | null;
        arrivalDate: Date | null;
        placeOfDespatch: string | null;
        placeOfArrival: string | null;
        truckNo: string | null;
        agentName: string | null;
        advanceAmount: Prisma.Decimal;
        balanceAmount: Prisma.Decimal;
        remainingQuantity: Prisma.Decimal;
        remainingBags: Prisma.Decimal;
        closedAt: Date | null;
    }>;
    getPurchases(page?: number, limit?: number, search?: string, dateFromStr?: string, dateToStr?: string, supplierId?: string, status?: string): Promise<{
        data: {
            unit: import("../generated/prisma/index.js").$Enums.PurchaseUnit;
            id: bigint;
            status: import("../generated/prisma/index.js").$Enums.PurchaseStatus;
            createdAt: Date;
            updatedAt: Date;
            createdBy: bigint | null;
            deletedAt: Date | null;
            supplierId: bigint | null;
            remarks: string | null;
            purchaseDate: Date;
            billNo: string | null;
            cashSupplierName: string | null;
            vegetableId: bigint;
            lotNo: string;
            purchaseType: import("../generated/prisma/index.js").$Enums.PurchaseType;
            rateType: import("../generated/prisma/index.js").$Enums.RateType;
            bags: Prisma.Decimal;
            weightPerBag: Prisma.Decimal | null;
            quantity: Prisma.Decimal;
            ratePerUnit: Prisma.Decimal;
            freight: Prisma.Decimal;
            extraFreight: Prisma.Decimal;
            associationFee: Prisma.Decimal;
            unloadingFee: Prisma.Decimal;
            miscellaneousFee: Prisma.Decimal;
            totalFreight: Prisma.Decimal;
            transportFee: Prisma.Decimal;
            loadingUnloadingFee: Prisma.Decimal;
            otherCharges: Prisma.Decimal;
            thaiyalCharges: Prisma.Decimal;
            extraCharges: Prisma.Decimal;
            goodsTotal: Prisma.Decimal;
            surchargeTotal: Prisma.Decimal;
            costPerUnit: Prisma.Decimal;
            grandTotal: Prisma.Decimal;
            dateOfDespatch: Date | null;
            arrivalDate: Date | null;
            placeOfDespatch: string | null;
            placeOfArrival: string | null;
            truckNo: string | null;
            agentName: string | null;
            advanceAmount: Prisma.Decimal;
            balanceAmount: Prisma.Decimal;
            remainingQuantity: Prisma.Decimal;
            remainingBags: Prisma.Decimal;
            closedAt: Date | null;
        }[];
        meta: {
            total: number;
            page: number;
            limit: number;
            totalPages: number;
        };
    }>;
    getPurchaseById(id: bigint): Promise<{
        vegetable: {
            name: string;
            id: bigint;
            isFlexible: boolean;
        };
        supplier: {
            name: string;
        } | null;
        expenses: {
            id: number;
            createdAt: Date;
            updatedAt: Date;
            createdBy: bigint | null;
            amount: Prisma.Decimal;
            paymentMode: import("../generated/prisma/index.js").$Enums.PaymentMode;
            remarks: string | null;
            purchaseId: bigint | null;
            expenseDate: Date;
            category: string;
        }[];
    } & {
        unit: import("../generated/prisma/index.js").$Enums.PurchaseUnit;
        id: bigint;
        status: import("../generated/prisma/index.js").$Enums.PurchaseStatus;
        createdAt: Date;
        updatedAt: Date;
        createdBy: bigint | null;
        deletedAt: Date | null;
        supplierId: bigint | null;
        remarks: string | null;
        purchaseDate: Date;
        billNo: string | null;
        cashSupplierName: string | null;
        vegetableId: bigint;
        lotNo: string;
        purchaseType: import("../generated/prisma/index.js").$Enums.PurchaseType;
        rateType: import("../generated/prisma/index.js").$Enums.RateType;
        bags: Prisma.Decimal;
        weightPerBag: Prisma.Decimal | null;
        quantity: Prisma.Decimal;
        ratePerUnit: Prisma.Decimal;
        freight: Prisma.Decimal;
        extraFreight: Prisma.Decimal;
        associationFee: Prisma.Decimal;
        unloadingFee: Prisma.Decimal;
        miscellaneousFee: Prisma.Decimal;
        totalFreight: Prisma.Decimal;
        transportFee: Prisma.Decimal;
        loadingUnloadingFee: Prisma.Decimal;
        otherCharges: Prisma.Decimal;
        thaiyalCharges: Prisma.Decimal;
        extraCharges: Prisma.Decimal;
        goodsTotal: Prisma.Decimal;
        surchargeTotal: Prisma.Decimal;
        costPerUnit: Prisma.Decimal;
        grandTotal: Prisma.Decimal;
        dateOfDespatch: Date | null;
        arrivalDate: Date | null;
        placeOfDespatch: string | null;
        placeOfArrival: string | null;
        truckNo: string | null;
        agentName: string | null;
        advanceAmount: Prisma.Decimal;
        balanceAmount: Prisma.Decimal;
        remainingQuantity: Prisma.Decimal;
        remainingBags: Prisma.Decimal;
        closedAt: Date | null;
    }>;
    updatePurchase(id: bigint, data: any): Promise<{
        unit: import("../generated/prisma/index.js").$Enums.PurchaseUnit;
        id: bigint;
        status: import("../generated/prisma/index.js").$Enums.PurchaseStatus;
        createdAt: Date;
        updatedAt: Date;
        createdBy: bigint | null;
        deletedAt: Date | null;
        supplierId: bigint | null;
        remarks: string | null;
        purchaseDate: Date;
        billNo: string | null;
        cashSupplierName: string | null;
        vegetableId: bigint;
        lotNo: string;
        purchaseType: import("../generated/prisma/index.js").$Enums.PurchaseType;
        rateType: import("../generated/prisma/index.js").$Enums.RateType;
        bags: Prisma.Decimal;
        weightPerBag: Prisma.Decimal | null;
        quantity: Prisma.Decimal;
        ratePerUnit: Prisma.Decimal;
        freight: Prisma.Decimal;
        extraFreight: Prisma.Decimal;
        associationFee: Prisma.Decimal;
        unloadingFee: Prisma.Decimal;
        miscellaneousFee: Prisma.Decimal;
        totalFreight: Prisma.Decimal;
        transportFee: Prisma.Decimal;
        loadingUnloadingFee: Prisma.Decimal;
        otherCharges: Prisma.Decimal;
        thaiyalCharges: Prisma.Decimal;
        extraCharges: Prisma.Decimal;
        goodsTotal: Prisma.Decimal;
        surchargeTotal: Prisma.Decimal;
        costPerUnit: Prisma.Decimal;
        grandTotal: Prisma.Decimal;
        dateOfDespatch: Date | null;
        arrivalDate: Date | null;
        placeOfDespatch: string | null;
        placeOfArrival: string | null;
        truckNo: string | null;
        agentName: string | null;
        advanceAmount: Prisma.Decimal;
        balanceAmount: Prisma.Decimal;
        remainingQuantity: Prisma.Decimal;
        remainingBags: Prisma.Decimal;
        closedAt: Date | null;
    }>;
    deletePurchase(id: bigint): Promise<{
        unit: import("../generated/prisma/index.js").$Enums.PurchaseUnit;
        id: bigint;
        status: import("../generated/prisma/index.js").$Enums.PurchaseStatus;
        createdAt: Date;
        updatedAt: Date;
        createdBy: bigint | null;
        deletedAt: Date | null;
        supplierId: bigint | null;
        remarks: string | null;
        purchaseDate: Date;
        billNo: string | null;
        cashSupplierName: string | null;
        vegetableId: bigint;
        lotNo: string;
        purchaseType: import("../generated/prisma/index.js").$Enums.PurchaseType;
        rateType: import("../generated/prisma/index.js").$Enums.RateType;
        bags: Prisma.Decimal;
        weightPerBag: Prisma.Decimal | null;
        quantity: Prisma.Decimal;
        ratePerUnit: Prisma.Decimal;
        freight: Prisma.Decimal;
        extraFreight: Prisma.Decimal;
        associationFee: Prisma.Decimal;
        unloadingFee: Prisma.Decimal;
        miscellaneousFee: Prisma.Decimal;
        totalFreight: Prisma.Decimal;
        transportFee: Prisma.Decimal;
        loadingUnloadingFee: Prisma.Decimal;
        otherCharges: Prisma.Decimal;
        thaiyalCharges: Prisma.Decimal;
        extraCharges: Prisma.Decimal;
        goodsTotal: Prisma.Decimal;
        surchargeTotal: Prisma.Decimal;
        costPerUnit: Prisma.Decimal;
        grandTotal: Prisma.Decimal;
        dateOfDespatch: Date | null;
        arrivalDate: Date | null;
        placeOfDespatch: string | null;
        placeOfArrival: string | null;
        truckNo: string | null;
        agentName: string | null;
        advanceAmount: Prisma.Decimal;
        balanceAmount: Prisma.Decimal;
        remainingQuantity: Prisma.Decimal;
        remainingBags: Prisma.Decimal;
        closedAt: Date | null;
    }>;
    getPurchaseMeta(): Promise<{
        suppliers: {
            name: string;
            id: bigint;
            outstandingBalance: Prisma.Decimal;
        }[];
        vegetables: {
            name: string;
            id: bigint;
            isFlexible: boolean;
        }[];
    }>;
}
//# sourceMappingURL=PurchaseService.d.ts.map