import { Prisma } from '@prisma/client';
import { PrismaService } from '../prisma/prisma.service';
/**
 * Phase 6 inventory dashboard + reports. All reports are org-scoped,
 * read-only, and valuation is qty × moving average cost per item+location.
 */
export declare class InventoryReportsService {
    private readonly prisma;
    constructor(prisma: PrismaService);
    dashboard(organizationId: string): Promise<{
        itemCount: number;
        locationCount: number;
        stockValue: string;
        outOfStockItems: number;
        alerts: Record<string, number>;
        openPurchaseOrders: number;
        movementsLast7Days: number;
        supplierOutstanding: string;
        recentMovements: ({
            item: {
                code: string;
                name: string;
            };
            location: {
                name: string;
            };
        } & {
            organizationId: string;
            id: string;
            itemId: string;
            inventoryVariantId: string;
            locationId: string;
            createdAt: Date;
            type: import("@prisma/client").$Enums.StockMovementType;
            qtyDelta: Prisma.Decimal;
            unitCost: Prisma.Decimal | null;
            orderId: string | null;
            reference: string | null;
            reason: string | null;
            createdById: string | null;
            sourceType: string | null;
            sourceId: string | null;
        })[];
    }>;
    /** Current stock (qty by item/location) with valuation. */
    currentStock(organizationId: string, locationId?: string, categoryId?: string): Promise<{
        reportType: string;
        generatedAt: string;
        total: string;
        totalValue: string;
        rows: {
            itemCode: string;
            itemName: string;
            category: string | null;
            uom: string;
            location: string;
            qtyOnHand: string;
            avgCost: string;
            value: string;
            minStockLevel: string;
            reorderLevel: string;
        }[];
    }>;
    /** Stock valuation summary per location. */
    valuation(organizationId: string): Promise<{
        reportType: string;
        generatedAt: string;
        total: string;
        grandTotal: string;
        rows: {
            locationId: string;
            location: string;
            itemCount: number;
            totalQty: string;
            totalValue: string;
        }[];
    }>;
    /** Low / out-of-stock report. */
    lowStock(organizationId: string): Promise<{
        reportType: string;
        generatedAt: string;
        rows: {
            itemCode: string;
            itemName: string;
            qtyOnHand: string;
            minStockLevel: string;
            reorderLevel: string;
            reorderQty: string | null;
            preferredSupplier: string | null;
            status: string;
        }[];
    }>;
    /** Movement summary grouped by type over a date range. */
    movementSummary(organizationId: string, from?: string, to?: string): Promise<{
        reportType: string;
        generatedAt: string;
        rows: {
            type: import("@prisma/client").$Enums.StockMovementType;
            count: number;
            netQty: string;
        }[];
    }>;
    /** Wastage & damage report with value impact. */
    wastageReport(organizationId: string, from?: string, to?: string): Promise<{
        reportType: string;
        generatedAt: string;
        totals: {
            [k: string]: string;
        };
        rows: {
            number: string;
            kind: import("@prisma/client").$Enums.InventoryAdjustmentKind;
            date: Date;
            itemCode: string;
            itemName: string;
            location: string;
            qty: string;
            valueImpact: string;
        }[];
    }>;
    /** Purchases summary by supplier over a date range. */
    purchaseSummary(organizationId: string, from?: string, to?: string): Promise<{
        reportType: string;
        generatedAt: string;
        rows: {
            supplierId: string;
            supplier: string;
            poCount: number;
            totalValue: string;
        }[];
    }>;
    /** Item cost history (avg cost changes). */
    costHistory(organizationId: string, itemId: string): Promise<({
        location: {
            name: string;
        };
    } & {
        organizationId: string;
        id: string;
        itemId: string;
        inventoryVariantId: string;
        locationId: string;
        createdAt: Date;
        sourceType: string;
        sourceId: string;
        prevQty: Prisma.Decimal;
        prevAvgCost: Prisma.Decimal;
        changeQty: Prisma.Decimal;
        changeUnitCost: Prisma.Decimal;
        newAvgCost: Prisma.Decimal;
    })[]>;
    /** Stock ledger for a single item+location with running balance. */
    stockLedger(organizationId: string, itemId: string, locationId?: string, from?: string, to?: string): Promise<{
        rows: {
            at: Date;
            type: import("@prisma/client").$Enums.StockMovementType;
            location: string;
            qtyDelta: string;
            unitCost: string | null;
            reference: string | null;
            runningQty: string;
        }[];
    }>;
}
//# sourceMappingURL=inventory-reports.service.d.ts.map