import { PurchaseOrderStatus, RobotUsageType } from '@prisma/client';
import type { CurrentUserPayload } from "../../../common/decorators/current-user.decorator";
import { PurchaseOrderService } from './purchase-order.service';
declare class CreatePurchaseOrderLineDto {
    lineNo: number;
    skuId: string;
    quantity: number;
    unitPrice: number;
    currencyCode: string;
    defaultUsageType?: RobotUsageType;
    placeholderPattern?: string;
    expectedAt?: string;
}
declare class CreatePurchaseOrderDto {
    poNo: string;
    supplierId: string;
    currencyCode: string;
    orderedAt: string;
    expectedAt?: string;
    notes?: string;
    lines: CreatePurchaseOrderLineDto[];
}
declare class UpdatePurchaseOrderDto {
    status?: PurchaseOrderStatus;
    expectedAt?: string;
    closedAt?: string;
    notes?: string;
    sapPoNo?: string;
}
declare class QueryPurchaseOrderDto {
    search?: string;
    status?: PurchaseOrderStatus;
    supplierId?: string;
    includeDeleted?: boolean;
    page?: number;
    limit?: number;
}
export declare class PurchaseOrderController {
    private readonly service;
    constructor(service: PurchaseOrderService);
    list(q: QueryPurchaseOrderDto): Promise<{
        items: ({
            _count: {
                robotUnits: number;
            };
            lines: {
                id: string;
                createdAt: Date;
                updatedAt: Date;
                quantity: number;
                currencyCode: string;
                skuId: string;
                purchaseOrderId: string;
                expectedAt: Date | null;
                lineNo: number;
                unitPrice: import("@prisma/client/runtime/library").Decimal;
                totalPrice: import("@prisma/client/runtime/library").Decimal;
                defaultUsageType: import("@prisma/client").$Enums.RobotUsageType | null;
                placeholderPattern: string | null;
            }[];
        } & {
            id: string;
            createdAt: Date;
            status: import("@prisma/client").$Enums.PurchaseOrderStatus;
            updatedAt: Date;
            deletedAt: Date | null;
            organizationId: string;
            createdById: string;
            version: number;
            totalAmount: import("@prisma/client/runtime/library").Decimal;
            notes: string | null;
            closedAt: Date | null;
            currencyCode: string;
            supplierId: string;
            poNo: string;
            orderedAt: Date;
            expectedAt: Date | null;
            sapPoNo: string | null;
        })[];
        total: number;
        page: number;
        limit: number;
        totalPages: number;
    }>;
    findOne(id: string): Promise<{
        lines: {
            id: string;
            createdAt: Date;
            updatedAt: Date;
            quantity: number;
            currencyCode: string;
            skuId: string;
            purchaseOrderId: string;
            expectedAt: Date | null;
            lineNo: number;
            unitPrice: import("@prisma/client/runtime/library").Decimal;
            totalPrice: import("@prisma/client/runtime/library").Decimal;
            defaultUsageType: import("@prisma/client").$Enums.RobotUsageType | null;
            placeholderPattern: string | null;
        }[];
        robotUnits: {
            id: string;
            ffsn: string;
        }[];
    } & {
        id: string;
        createdAt: Date;
        status: import("@prisma/client").$Enums.PurchaseOrderStatus;
        updatedAt: Date;
        deletedAt: Date | null;
        organizationId: string;
        createdById: string;
        version: number;
        totalAmount: import("@prisma/client/runtime/library").Decimal;
        notes: string | null;
        closedAt: Date | null;
        currencyCode: string;
        supplierId: string;
        poNo: string;
        orderedAt: Date;
        expectedAt: Date | null;
        sapPoNo: string | null;
    }>;
    create(dto: CreatePurchaseOrderDto, user: CurrentUserPayload): Promise<{
        lines: {
            id: string;
            createdAt: Date;
            updatedAt: Date;
            quantity: number;
            currencyCode: string;
            skuId: string;
            purchaseOrderId: string;
            expectedAt: Date | null;
            lineNo: number;
            unitPrice: import("@prisma/client/runtime/library").Decimal;
            totalPrice: import("@prisma/client/runtime/library").Decimal;
            defaultUsageType: import("@prisma/client").$Enums.RobotUsageType | null;
            placeholderPattern: string | null;
        }[];
    } & {
        id: string;
        createdAt: Date;
        status: import("@prisma/client").$Enums.PurchaseOrderStatus;
        updatedAt: Date;
        deletedAt: Date | null;
        organizationId: string;
        createdById: string;
        version: number;
        totalAmount: import("@prisma/client/runtime/library").Decimal;
        notes: string | null;
        closedAt: Date | null;
        currencyCode: string;
        supplierId: string;
        poNo: string;
        orderedAt: Date;
        expectedAt: Date | null;
        sapPoNo: string | null;
    }>;
    update(id: string, dto: UpdatePurchaseOrderDto, user: CurrentUserPayload): Promise<{
        lines: {
            id: string;
            createdAt: Date;
            updatedAt: Date;
            quantity: number;
            currencyCode: string;
            skuId: string;
            purchaseOrderId: string;
            expectedAt: Date | null;
            lineNo: number;
            unitPrice: import("@prisma/client/runtime/library").Decimal;
            totalPrice: import("@prisma/client/runtime/library").Decimal;
            defaultUsageType: import("@prisma/client").$Enums.RobotUsageType | null;
            placeholderPattern: string | null;
        }[];
        robotUnits: {
            id: string;
            ffsn: string;
        }[];
    } & {
        id: string;
        createdAt: Date;
        status: import("@prisma/client").$Enums.PurchaseOrderStatus;
        updatedAt: Date;
        deletedAt: Date | null;
        organizationId: string;
        createdById: string;
        version: number;
        totalAmount: import("@prisma/client/runtime/library").Decimal;
        notes: string | null;
        closedAt: Date | null;
        currencyCode: string;
        supplierId: string;
        poNo: string;
        orderedAt: Date;
        expectedAt: Date | null;
        sapPoNo: string | null;
    }>;
    remove(id: string, user: CurrentUserPayload): Promise<{
        message: string;
        id: string;
    }>;
}
export {};
