import { Model } from "mongoose";
import { BatchDocument } from "./schemas/batch.schema";
import { InventoryBalanceDocument } from "./schemas/inventory-balance.schema";
import { InventoryThresholdStateDocument } from "./schemas/inventory-threshold-state.schema";
import { InventoryTransactionDocument } from "./schemas/inventory-transaction.schema";
import { ItemDocument } from "./schemas/item.schema";
import { StockMovementSheetDocument } from "./schemas/stock-movement-sheet.schema";
import { StockTransactionDocument } from "./schemas/stock-transaction.schema";
import { WarehouseDocument } from "./schemas/warehouse.schema";
export declare class InventoryService {
    private readonly warehouseModel;
    private readonly itemModel;
    private readonly batchModel;
    private readonly transactionModel;
    private readonly balanceModel;
    private readonly stockTxModel;
    private readonly sheetModel;
    private readonly thresholdStateModel;
    private readonly thresholdTargetMt;
    private readonly thresholdStateKey;
    constructor(warehouseModel: Model<WarehouseDocument>, itemModel: Model<ItemDocument>, batchModel: Model<BatchDocument>, transactionModel: Model<InventoryTransactionDocument>, balanceModel: Model<InventoryBalanceDocument>, stockTxModel: Model<StockTransactionDocument>, sheetModel: Model<StockMovementSheetDocument>, thresholdStateModel: Model<InventoryThresholdStateDocument>);
    getSummary(): Promise<{
        totalAvailableMt: number;
        totalEmptyMt: number;
        thresholdTargetMt: number;
        hasReachedThreshold: boolean;
        invoiceRequiredForStockIn: boolean;
        expiringWithinSixMonths: number;
        pendingReviews: number;
    }>;
    getInventory(): Promise<{
        id: string;
        warehouse: string | null;
        itemCode: string | null;
        itemName: string | null;
        batchNumber: string | null;
        expiryDate: string | null;
        inboundMt: any;
        outboundMt: any;
        availableMt: number;
        thresholdTargetMt: number;
        thresholdProgressPct: number;
    }[]>;
    getExpiry(months?: number, warehouseNames?: string[]): Promise<{
        warehouse: string | null;
        itemCode: string | null;
        itemName: string | null;
        batchNumber: string;
        expiryDate: string | null;
        availableMt: number;
    }[]>;
    getBatches(itemId: string, warehouseId: string): Promise<{
        availableMt: number;
        id: string;
        batchNumber: string;
        expiryDate: string;
        availableBags: number;
    }[]>;
    private sumTransactions;
    private syncThresholdState;
    private getHistoricalThresholdBasis;
}
