import { Model } from "mongoose";
import { BatchDocument } from "./schemas/batch.schema";
import { InventoryBalanceDocument } from "./schemas/inventory-balance.schema";
import { ItemDocument } from "./schemas/item.schema";
import { StockMovementSheetDocument } from "./schemas/stock-movement-sheet.schema";
import { StockTransactionDocument } from "./schemas/stock-transaction.schema";
export declare class ItemsService {
    private readonly itemModel;
    private readonly batchModel;
    private readonly balanceModel;
    private readonly sheetModel;
    private readonly stockTxModel;
    constructor(itemModel: Model<ItemDocument>, batchModel: Model<BatchDocument>, balanceModel: Model<InventoryBalanceDocument>, sheetModel: Model<StockMovementSheetDocument>, stockTxModel: Model<StockTransactionDocument>);
    findAll(): Promise<any[]>;
    findByCode(itemCode: string): Promise<any>;
    create(payload: {
        itemCode: string;
        itemName?: string;
        description?: string;
        brand?: string;
        barcode?: string;
        countryOfOrigin?: string;
        blend?: string;
        grainType?: string;
        varietyType?: string;
        processType?: string;
        unit?: string;
        bagWeightKg?: number;
        packing?: string;
        variant?: string;
        riceName?: string;
        category?: string;
    }): Promise<any>;
    update(id: string, payload: Partial<{
        itemCode: string;
        itemName: string;
        description: string;
        brand: string;
        barcode: string;
        countryOfOrigin: string;
        blend: string;
        grainType: string;
        varietyType: string;
        processType: string;
        unit: string;
        bagWeightKg: number;
        packing: string;
        variant: string;
        riceName: string;
        category: string;
    }>): Promise<any>;
    searchItems(query: string): Promise<any[]>;
    findBatches(itemId: string, warehouseId: string): Promise<{
        id: string;
        batchNumber: string;
        expiryDate: string;
        availableBags: number | undefined;
        availableMt: number;
    }[]>;
}
