import type { CurrentUserPayload } from "../../common/decorators/current-user.decorator";
import { LabelService } from './services/label.service';
import { GenerateLabelDto, BulkGenerateLabelsDto, PrintLabelDto, BulkPrintLabelsDto } from './dto/part.dto';
export declare class LabelsController {
    private readonly labelService;
    constructor(labelService: LabelService);
    generateLabel(generateDto: GenerateLabelDto, user: CurrentUserPayload): Promise<{
        labels: ({
            part: {
                station: string | null;
                id: string;
                createdAt: Date;
                status: import("@prisma/client").$Enums.PartStatus;
                source: string | null;
                metadata: import("@prisma/client/runtime/library").JsonValue;
                updatedAt: Date;
                deletedAt: Date | null;
                customFields: import("@prisma/client/runtime/library").JsonValue | null;
                partNumber: string;
                partNameEn: string;
                partNameCn: string | null;
                unit: string;
                specifications: string | null;
                remark: string | null;
                currentStock: number;
                minStock: number;
                maxStock: number | null;
                warehouseLocation: string | null;
                warehouseId: string | null;
                storageLocationId: string | null;
                imageUrl: string | null;
                stationId: string | null;
            };
        } & {
            id: string;
            createdAt: Date;
            status: import("@prisma/client").$Enums.LabelStatus;
            updatedAt: Date;
            size: string;
            template: string;
            partId: string;
            labelCode: string;
            qrCodeData: string;
            printCount: number;
            lastPrintedAt: Date | null;
            printedBy: string | null;
        })[];
        message: string;
    }>;
    bulkGenerateLabels(bulkDto: BulkGenerateLabelsDto, user: CurrentUserPayload): Promise<{
        total: number;
        success: number;
        failed: number;
        labels: any[];
        errors: any[];
    }>;
    printLabel(printDto: PrintLabelDto, user: CurrentUserPayload): Promise<{
        label: {
            part: {
                station: string | null;
                id: string;
                createdAt: Date;
                status: import("@prisma/client").$Enums.PartStatus;
                source: string | null;
                metadata: import("@prisma/client/runtime/library").JsonValue;
                updatedAt: Date;
                deletedAt: Date | null;
                customFields: import("@prisma/client/runtime/library").JsonValue | null;
                partNumber: string;
                partNameEn: string;
                partNameCn: string | null;
                unit: string;
                specifications: string | null;
                remark: string | null;
                currentStock: number;
                minStock: number;
                maxStock: number | null;
                warehouseLocation: string | null;
                warehouseId: string | null;
                storageLocationId: string | null;
                imageUrl: string | null;
                stationId: string | null;
            };
        } & {
            id: string;
            createdAt: Date;
            status: import("@prisma/client").$Enums.LabelStatus;
            updatedAt: Date;
            size: string;
            template: string;
            partId: string;
            labelCode: string;
            qrCodeData: string;
            printCount: number;
            lastPrintedAt: Date | null;
            printedBy: string | null;
        };
        printData: {
            format: string;
            printerType: string;
            data: string;
            size: any;
        } | {
            format: string;
            printerType: string;
            fields: ({
                type: string;
                content: any;
                fontSize: number;
                size?: undefined;
            } | {
                type: string;
                content: any;
                size: number;
                fontSize?: undefined;
            })[];
            size: any;
        } | {
            format: string;
            printerType: string;
            label: {
                partNumber: any;
                partName: any;
                partNameCn: any;
                station: any;
                warehouseLocation: any;
                labelCode: any;
                qrCodeData: any;
                qrCodeUrl: string;
            };
            size: any;
        };
        message: string;
    }>;
    bulkPrintLabels(bulkDto: BulkPrintLabelsDto, user: CurrentUserPayload): Promise<{
        total: number;
        success: number;
        failed: number;
        printData: any[];
        errors: any[];
    }>;
    findOne(id: string): Promise<{
        part: {
            station: string | null;
            id: string;
            createdAt: Date;
            status: import("@prisma/client").$Enums.PartStatus;
            source: string | null;
            metadata: import("@prisma/client/runtime/library").JsonValue;
            updatedAt: Date;
            deletedAt: Date | null;
            customFields: import("@prisma/client/runtime/library").JsonValue | null;
            partNumber: string;
            partNameEn: string;
            partNameCn: string | null;
            unit: string;
            specifications: string | null;
            remark: string | null;
            currentStock: number;
            minStock: number;
            maxStock: number | null;
            warehouseLocation: string | null;
            warehouseId: string | null;
            storageLocationId: string | null;
            imageUrl: string | null;
            stationId: string | null;
        };
    } & {
        id: string;
        createdAt: Date;
        status: import("@prisma/client").$Enums.LabelStatus;
        updatedAt: Date;
        size: string;
        template: string;
        partId: string;
        labelCode: string;
        qrCodeData: string;
        printCount: number;
        lastPrintedAt: Date | null;
        printedBy: string | null;
    }>;
    findByLabelCode(labelCode: string): Promise<{
        part: {
            station: string | null;
            id: string;
            createdAt: Date;
            status: import("@prisma/client").$Enums.PartStatus;
            source: string | null;
            metadata: import("@prisma/client/runtime/library").JsonValue;
            updatedAt: Date;
            deletedAt: Date | null;
            customFields: import("@prisma/client/runtime/library").JsonValue | null;
            partNumber: string;
            partNameEn: string;
            partNameCn: string | null;
            unit: string;
            specifications: string | null;
            remark: string | null;
            currentStock: number;
            minStock: number;
            maxStock: number | null;
            warehouseLocation: string | null;
            warehouseId: string | null;
            storageLocationId: string | null;
            imageUrl: string | null;
            stationId: string | null;
        };
    } & {
        id: string;
        createdAt: Date;
        status: import("@prisma/client").$Enums.LabelStatus;
        updatedAt: Date;
        size: string;
        template: string;
        partId: string;
        labelCode: string;
        qrCodeData: string;
        printCount: number;
        lastPrintedAt: Date | null;
        printedBy: string | null;
    }>;
    findByPartId(partId: string): Promise<({
        part: {
            station: string | null;
            id: string;
            partNumber: string;
            partNameEn: string;
            partNameCn: string | null;
            warehouseLocation: string | null;
        };
    } & {
        id: string;
        createdAt: Date;
        status: import("@prisma/client").$Enums.LabelStatus;
        updatedAt: Date;
        size: string;
        template: string;
        partId: string;
        labelCode: string;
        qrCodeData: string;
        printCount: number;
        lastPrintedAt: Date | null;
        printedBy: string | null;
    })[]>;
    voidLabel(id: string, user: CurrentUserPayload): Promise<{
        message: string;
    }>;
    getPrintStats(startDate?: string, endDate?: string): Promise<{
        totalLabels: number;
        totalPrints: number;
        labelsByStatus: (import("@prisma/client").Prisma.PickEnumerable<import("@prisma/client").Prisma.PartLabelGroupByOutputType, "status"[]> & {
            _count: number;
        })[];
    }>;
}
