import type { Request } from 'express';
import { PosProcurementService } from './pos-procurement.service';
import { PosInventoryCostService } from './pos-inventory-cost.service';
import { CreatePosSupplierDto, CreatePosPurchaseOrderDto, CreatePosGoodsReceiptDto } from './dto/pos-procurement.dto';
export declare class PosProcurementController {
    private readonly service;
    private readonly costService;
    constructor(service: PosProcurementService, costService: PosInventoryCostService);
    suppliers(req: Request, search?: string, status?: string, page?: string, limit?: string): Promise<import("../../../common/interfaces/pagination-result.interface").PaginationResult<import("./entities/pos-supplier.entity").PosSupplier> | {
        data: import("./entities/pos-supplier.entity").PosSupplier[];
        current_page: number;
        last_page: number;
        per_page: number;
        total: number;
    }>;
    createSupplier(body: CreatePosSupplierDto): Promise<import("./entities/pos-supplier.entity").PosSupplier>;
    updateSupplier(id: number, body: CreatePosSupplierDto): Promise<import("./entities/pos-supplier.entity").PosSupplier>;
    deleteSupplier(id: number): Promise<{
        message: string;
    }>;
    purchaseOrders(req: Request, storeId?: string, supplierId?: string, status?: string, page?: string, limit?: string): Promise<import("../../../common/interfaces/pagination-result.interface").PaginationResult<any> | {
        data: any[];
        current_page: number;
        last_page: number;
        per_page: number;
        total: number;
    }>;
    getPurchaseOrder(id: number): Promise<any>;
    createPurchaseOrder(body: CreatePosPurchaseOrderDto, userId: number): Promise<import("./entities/pos-purchase-order.entity").PosPurchaseOrder>;
    purchaseOrderItems(id: number): Promise<any[]>;
    submitPurchaseOrder(id: number): Promise<import("./entities/pos-purchase-order.entity").PosPurchaseOrder>;
    approvePurchaseOrder(id: number, userId: number): Promise<import("./entities/pos-purchase-order.entity").PosPurchaseOrder>;
    cancelPurchaseOrder(id: number): Promise<import("./entities/pos-purchase-order.entity").PosPurchaseOrder>;
    goodsReceipts(req: Request, storeId?: string, supplierId?: string, status?: string, page?: string, limit?: string): Promise<import("../../../common/interfaces/pagination-result.interface").PaginationResult<any> | {
        data: any[];
        current_page: number;
        last_page: number;
        per_page: number;
        total: number;
    }>;
    getGoodsReceipt(id: number): Promise<any>;
    createGoodsReceipt(body: CreatePosGoodsReceiptDto, userId: number): Promise<import("./entities/pos-goods-receipt.entity").PosGoodsReceipt>;
    goodsReceiptItems(id: number): Promise<any[]>;
    checkGoodsReceipt(id: number): Promise<import("./entities/pos-goods-receipt.entity").PosGoodsReceipt>;
    approveGoodsReceipt(id: number, userId: number): Promise<import("./entities/pos-goods-receipt.entity").PosGoodsReceipt>;
    postGoodsReceipt(id: number, userId: number): Promise<import("./entities/pos-goods-receipt.entity").PosGoodsReceipt>;
    inventoryReport(storeId?: string, locationId?: string, variantId?: string, lowStockOnly?: string): Promise<import("./entities/pos-inventory-balance.entity").PosInventoryBalance[]>;
    inventoryMovements(locationId?: string, variantId?: string, movementType?: string, dateFrom?: string, dateTo?: string): Promise<import("./entities/pos-inventory-movement.entity").PosInventoryMovement[]>;
    negativeInventoryReport(storeId?: string, locationId?: string): Promise<import("./entities/pos-inventory-balance.entity").PosInventoryBalance[]>;
    getCost(variantId: number, locationId?: string): Promise<{
        variant_id: number;
        location_id: number;
        remaining_quantity: number;
        remaining_cost: number;
        avg_unit_cost: number;
        layer_count: number;
    }>;
    getCostLayers(variantId: number, locationId?: string): Promise<import("./entities/pos-inventory-cost-layer.entity").PosInventoryCostLayer[]>;
    costReport(locationId?: string): Promise<any[]>;
}
