import { Prisma } from "../generated/prisma/client.js";
export declare class SaleRepository {
    private computeNetGrandTotal;
    generateInvoiceNo(invoiceNo: string): Promise<{
        id: bigint;
        createdAt: Date;
        updatedAt: Date;
        createdBy: bigint | null;
        deletedAt: Date | null;
        remarks: string | null;
        isWhatsappMessageSent: boolean;
        grandTotal: Prisma.Decimal;
        balanceAmount: Prisma.Decimal;
        invoiceNo: string;
        customerId: bigint | null;
        walkInName: string | null;
        walkInMobile: string | null;
        invoiceDate: Date;
        subTotal: Prisma.Decimal;
        discount: Prisma.Decimal;
        freightCharge: Prisma.Decimal;
        receivedAmount: Prisma.Decimal;
        cashAmount: Prisma.Decimal;
        upiAmount: Prisma.Decimal;
        bankAmount: Prisma.Decimal;
        paymentStatus: import("../generated/prisma/index.js").$Enums.SalePaymentStatus;
        images: Prisma.JsonValue | null;
        invoiceDownloadToken: string;
    } | null>;
    create(saleData: any, items: any[]): Promise<{
        customer: {
            name: string;
        } | null;
        items: ({
            purchase: {
                lotNo: string;
            };
        } & {
            id: bigint;
            total: Prisma.Decimal;
            createdAt: Date;
            updatedAt: Date;
            createdBy: bigint | null;
            bags: Prisma.Decimal | null;
            quantity: Prisma.Decimal;
            costPerUnit: Prisma.Decimal;
            saleId: bigint;
            purchaseId: bigint;
            saleUnit: import("../generated/prisma/index.js").$Enums.PurchaseUnit;
            sellingRate: Prisma.Decimal;
        })[];
    } & {
        id: bigint;
        createdAt: Date;
        updatedAt: Date;
        createdBy: bigint | null;
        deletedAt: Date | null;
        remarks: string | null;
        isWhatsappMessageSent: boolean;
        grandTotal: Prisma.Decimal;
        balanceAmount: Prisma.Decimal;
        invoiceNo: string;
        customerId: bigint | null;
        walkInName: string | null;
        walkInMobile: string | null;
        invoiceDate: Date;
        subTotal: Prisma.Decimal;
        discount: Prisma.Decimal;
        freightCharge: Prisma.Decimal;
        receivedAmount: Prisma.Decimal;
        cashAmount: Prisma.Decimal;
        upiAmount: Prisma.Decimal;
        bankAmount: Prisma.Decimal;
        paymentStatus: import("../generated/prisma/index.js").$Enums.SalePaymentStatus;
        images: Prisma.JsonValue | null;
        invoiceDownloadToken: string;
    }>;
    findAll(skip?: number, take?: number, customerId?: bigint, dateFrom?: Date, dateTo?: Date, search?: string, saleType?: string): Promise<{
        items: {
            id: bigint;
            createdAt: Date;
            updatedAt: Date;
            createdBy: bigint | null;
            deletedAt: Date | null;
            remarks: string | null;
            isWhatsappMessageSent: boolean;
            grandTotal: Prisma.Decimal;
            balanceAmount: Prisma.Decimal;
            invoiceNo: string;
            customerId: bigint | null;
            walkInName: string | null;
            walkInMobile: string | null;
            invoiceDate: Date;
            subTotal: Prisma.Decimal;
            discount: Prisma.Decimal;
            freightCharge: Prisma.Decimal;
            receivedAmount: Prisma.Decimal;
            cashAmount: Prisma.Decimal;
            upiAmount: Prisma.Decimal;
            bankAmount: Prisma.Decimal;
            paymentStatus: import("../generated/prisma/index.js").$Enums.SalePaymentStatus;
            images: Prisma.JsonValue | null;
            invoiceDownloadToken: string;
        }[];
        total: number;
        summary: {
            totalSubTotal: number;
            totalGrandTotal: number;
            totalReceivedAmount: number;
            totalBalanceAmount: number;
            totalCashAmount: number;
            totalUpiAmount: number;
            totalBankAmount: number;
        };
    }>;
    findById(id: bigint): Promise<({
        customer: {
            name: string;
            outstandingBalance: Prisma.Decimal;
        } | null;
        items: ({
            purchase: {
                unit: import("../generated/prisma/index.js").$Enums.PurchaseUnit;
                id: bigint;
                vegetable: {
                    name: string;
                    id: bigint;
                    tamilName: string | null;
                    hindiName: string | null;
                    kannadaName: string | null;
                    malayalamName: string | null;
                    teluguName: string | null;
                };
                supplier: {
                    name: string;
                } | null;
                vegetableId: bigint;
                lotNo: string;
                purchaseType: import("../generated/prisma/index.js").$Enums.PurchaseType;
                rateType: import("../generated/prisma/index.js").$Enums.RateType;
                weightPerBag: Prisma.Decimal | null;
                costPerUnit: Prisma.Decimal;
                remainingQuantity: Prisma.Decimal;
                remainingBags: Prisma.Decimal;
                arrivalSettlement: {
                    id: bigint;
                    status: import("../generated/prisma/index.js").$Enums.SettlementStatus;
                    settlementNo: string;
                } | null;
            };
            saleReturns: {
                reason: string | null;
                id: bigint;
                createdAt: Date;
                updatedAt: Date;
                createdBy: bigint | null;
                remarks: string | null;
                quantity: Prisma.Decimal;
                purchaseId: bigint;
                saleItemId: bigint;
                returnDate: Date;
                returnAmount: Prisma.Decimal;
            }[];
        } & {
            id: bigint;
            total: Prisma.Decimal;
            createdAt: Date;
            updatedAt: Date;
            createdBy: bigint | null;
            bags: Prisma.Decimal | null;
            quantity: Prisma.Decimal;
            costPerUnit: Prisma.Decimal;
            saleId: bigint;
            purchaseId: bigint;
            saleUnit: import("../generated/prisma/index.js").$Enums.PurchaseUnit;
            sellingRate: Prisma.Decimal;
        })[];
    } & {
        id: bigint;
        createdAt: Date;
        updatedAt: Date;
        createdBy: bigint | null;
        deletedAt: Date | null;
        remarks: string | null;
        isWhatsappMessageSent: boolean;
        grandTotal: Prisma.Decimal;
        balanceAmount: Prisma.Decimal;
        invoiceNo: string;
        customerId: bigint | null;
        walkInName: string | null;
        walkInMobile: string | null;
        invoiceDate: Date;
        subTotal: Prisma.Decimal;
        discount: Prisma.Decimal;
        freightCharge: Prisma.Decimal;
        receivedAmount: Prisma.Decimal;
        cashAmount: Prisma.Decimal;
        upiAmount: Prisma.Decimal;
        bankAmount: Prisma.Decimal;
        paymentStatus: import("../generated/prisma/index.js").$Enums.SalePaymentStatus;
        images: Prisma.JsonValue | null;
        invoiceDownloadToken: string;
    }) | null>;
    findCancelledById(id: bigint): Promise<({
        items: {
            id: bigint;
            total: Prisma.Decimal;
            createdAt: Date;
            updatedAt: Date;
            createdBy: bigint | null;
            bags: Prisma.Decimal | null;
            quantity: Prisma.Decimal;
            costPerUnit: Prisma.Decimal;
            saleId: bigint;
            purchaseId: bigint;
            saleUnit: import("../generated/prisma/index.js").$Enums.PurchaseUnit;
            sellingRate: Prisma.Decimal;
        }[];
    } & {
        id: bigint;
        createdAt: Date;
        updatedAt: Date;
        createdBy: bigint | null;
        deletedAt: Date | null;
        remarks: string | null;
        isWhatsappMessageSent: boolean;
        grandTotal: Prisma.Decimal;
        balanceAmount: Prisma.Decimal;
        invoiceNo: string;
        customerId: bigint | null;
        walkInName: string | null;
        walkInMobile: string | null;
        invoiceDate: Date;
        subTotal: Prisma.Decimal;
        discount: Prisma.Decimal;
        freightCharge: Prisma.Decimal;
        receivedAmount: Prisma.Decimal;
        cashAmount: Prisma.Decimal;
        upiAmount: Prisma.Decimal;
        bankAmount: Prisma.Decimal;
        paymentStatus: import("../generated/prisma/index.js").$Enums.SalePaymentStatus;
        images: Prisma.JsonValue | null;
        invoiceDownloadToken: string;
    }) | null>;
    getAvailableLots(vegetableId?: bigint): Promise<{
        id: string;
        lotNo: string;
        batchIndex: number;
        batchLabel: string;
        unit: import("../generated/prisma/index.js").$Enums.PurchaseUnit;
        weightPerBag: Prisma.Decimal | null;
        costPerUnit: Prisma.Decimal;
        remainingQuantity: Prisma.Decimal;
        remainingBags: Prisma.Decimal;
        arrivalDate: Date | null;
        purchaseDate: Date;
        vegetable: {
            name: string;
            id: bigint;
            isFlexible: boolean;
        };
        supplier: {
            name: string;
        } | null;
    }[]>;
    getTodaySalesAmount(): Promise<number>;
    getSalesProfitChart(): Promise<{
        day: string;
        sales: number;
        profit: number;
    }[]>;
    getTodaysWholesaleProfit(): Promise<number>;
    getTopDemandedVegetables(): Promise<{
        vegetable: string;
        sold: number;
        bags: number;
    }[]>;
    getRecentSales(): Promise<{
        invoiceNo: string;
        customer: string;
        amount: number;
        status: string;
        date: string;
    }[]>;
    getReportSalesData(skip?: number, take?: number, customerId?: bigint, dateFrom?: Date, dateTo?: Date, isWalkIn?: boolean): Promise<{
        items: {
            grandTotal: Prisma.Decimal;
            id: bigint;
            createdAt: Date;
            updatedAt: Date;
            createdBy: bigint | null;
            deletedAt: Date | null;
            remarks: string | null;
            isWhatsappMessageSent: boolean;
            balanceAmount: Prisma.Decimal;
            invoiceNo: string;
            customerId: bigint | null;
            walkInName: string | null;
            walkInMobile: string | null;
            invoiceDate: Date;
            subTotal: Prisma.Decimal;
            discount: Prisma.Decimal;
            freightCharge: Prisma.Decimal;
            receivedAmount: Prisma.Decimal;
            cashAmount: Prisma.Decimal;
            upiAmount: Prisma.Decimal;
            bankAmount: Prisma.Decimal;
            paymentStatus: import("../generated/prisma/index.js").$Enums.SalePaymentStatus;
            images: Prisma.JsonValue | null;
            invoiceDownloadToken: string;
        }[];
        total: number;
        grand_total_sum: Prisma.Decimal;
        balance_amount_sum: number | Prisma.Decimal;
        outstanding_balance_sum: number | Prisma.Decimal;
    }>;
    getReportVegetableWiseSales(skip?: number, take?: number, vegetableId?: bigint, dateFrom?: Date, dateTo?: Date, search?: string): Promise<{
        items: any[];
        total: number;
        grand_total_sales: Prisma.Decimal;
        total_quantity_sold: Prisma.Decimal;
    }>;
    getReportLotWiseSales(skip?: number, take?: number, lotNo?: string, dateFrom?: Date, dateTo?: Date, vegetableId?: bigint, search?: string): Promise<{
        items: any[];
        total: number;
        grand_total_sales: Prisma.Decimal;
        total_quantity_sold: Prisma.Decimal;
        total_bags_sold: Prisma.Decimal;
    }>;
    getDistinctLotsForSales(dateFrom?: Date, dateTo?: Date): Promise<{
        lotNo: string;
        vegetableName?: string;
    }[]>;
}
//# sourceMappingURL=SaleRepository.d.ts.map