import { PrismaService } from "../../../core/database/prisma/prisma.service";
import { Prisma } from '@prisma/client';
import { CreatePartDto, UpdatePartDto, QueryPartsDto, BulkImportPartsDto, StockStatus } from '../dto/part.dto';
import { PartGroupsService } from './part-groups.service';
export declare class PartsService {
    private readonly prisma;
    private readonly partGroupsService;
    private readonly logger;
    constructor(prisma: PrismaService, partGroupsService: PartGroupsService);
    private calculateStockStatus;
    private resolvePartIdentifier;
    create(createPartDto: CreatePartDto, userId: string): Promise<{
        labels: {
            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;
        }[];
        groups: ({
            group: {
                id: string;
                createdAt: Date;
                name: string;
                updatedAt: Date;
                deletedAt: Date | null;
                description: string | null;
                isActive: boolean;
                updatedBy: string | null;
                createdBy: string | null;
                displayOrder: number;
                partsCount: number;
                fieldsCount: number;
            };
        } & {
            createdAt: Date;
            createdBy: string | null;
            groupId: string;
            partId: string;
        })[];
        stockAlerts: {
            message: string;
            id: string;
            createdAt: Date;
            status: import("@prisma/client").$Enums.AlertStatus;
            updatedAt: Date;
            severity: import("@prisma/client").$Enums.AlertSeverity;
            alertType: import("@prisma/client").$Enums.StockAlertType;
            acknowledgedAt: Date | null;
            acknowledgedBy: string | null;
            threshold: number;
            resolvedAt: Date | null;
            resolvedBy: string | null;
            resolution: string | null;
            currentStock: number;
            partId: string;
        }[];
    } & {
        station: string | null;
        id: string;
        createdAt: Date;
        status: import("@prisma/client").$Enums.PartStatus;
        source: string | null;
        metadata: Prisma.JsonValue;
        updatedAt: Date;
        deletedAt: Date | null;
        customFields: Prisma.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;
    }>;
    findAll(query: QueryPartsDto): Promise<{
        items: {
            stockStatus: StockStatus;
            _count: {
                labels: number;
                inventoryLogs: number;
            };
            labels: {
                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;
            }[];
            groups: ({
                group: {
                    customFields: {
                        type: import("@prisma/client").$Enums.GroupFieldType;
                        id: string;
                        createdAt: Date;
                        updatedAt: Date;
                        deletedAt: Date | null;
                        description: string | null;
                        key: string;
                        nameEn: string;
                        validation: Prisma.JsonValue | null;
                        options: Prisma.JsonValue | null;
                        updatedBy: string | null;
                        createdBy: string | null;
                        required: boolean;
                        editable: boolean;
                        groupId: string;
                        nameCn: string | null;
                        visible: boolean;
                        searchable: boolean;
                        placeholder: string | null;
                        helpText: string | null;
                        displayOrder: number;
                    }[];
                } & {
                    id: string;
                    createdAt: Date;
                    name: string;
                    updatedAt: Date;
                    deletedAt: Date | null;
                    description: string | null;
                    isActive: boolean;
                    updatedBy: string | null;
                    createdBy: string | null;
                    displayOrder: number;
                    partsCount: number;
                    fieldsCount: number;
                };
            } & {
                createdAt: Date;
                createdBy: string | null;
                groupId: string;
                partId: string;
            })[];
            stockAlerts: {
                message: string;
                id: string;
                createdAt: Date;
                status: import("@prisma/client").$Enums.AlertStatus;
                updatedAt: Date;
                severity: import("@prisma/client").$Enums.AlertSeverity;
                alertType: import("@prisma/client").$Enums.StockAlertType;
                acknowledgedAt: Date | null;
                acknowledgedBy: string | null;
                threshold: number;
                resolvedAt: Date | null;
                resolvedBy: string | null;
                resolution: string | null;
                currentStock: number;
                partId: string;
            }[];
            station: string | null;
            id: string;
            createdAt: Date;
            status: import("@prisma/client").$Enums.PartStatus;
            source: string | null;
            metadata: Prisma.JsonValue;
            updatedAt: Date;
            deletedAt: Date | null;
            customFields: Prisma.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;
        }[];
        total: number;
        page: number;
        limit: number;
        totalPages: number;
        hasNext: boolean;
        hasPrev: boolean;
    }>;
    findOne(id: string): Promise<{
        stockStatus: StockStatus;
        _count: {
            labels: number;
            inventoryLogs: number;
            stockAlerts: number;
        };
        labels: {
            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;
        }[];
        groups: ({
            group: {
                customFields: {
                    type: import("@prisma/client").$Enums.GroupFieldType;
                    id: string;
                    createdAt: Date;
                    updatedAt: Date;
                    deletedAt: Date | null;
                    description: string | null;
                    key: string;
                    nameEn: string;
                    validation: Prisma.JsonValue | null;
                    options: Prisma.JsonValue | null;
                    updatedBy: string | null;
                    createdBy: string | null;
                    required: boolean;
                    editable: boolean;
                    groupId: string;
                    nameCn: string | null;
                    visible: boolean;
                    searchable: boolean;
                    placeholder: string | null;
                    helpText: string | null;
                    displayOrder: number;
                }[];
            } & {
                id: string;
                createdAt: Date;
                name: string;
                updatedAt: Date;
                deletedAt: Date | null;
                description: string | null;
                isActive: boolean;
                updatedBy: string | null;
                createdBy: string | null;
                displayOrder: number;
                partsCount: number;
                fieldsCount: number;
            };
        } & {
            createdAt: Date;
            createdBy: string | null;
            groupId: string;
            partId: string;
        })[];
        inventoryLogs: {
            station: string | null;
            id: string;
            createdAt: Date;
            metadata: Prisma.JsonValue;
            operationType: import("@prisma/client").$Enums.InventoryOperationType;
            reason: string | null;
            operatorId: string;
            warehouseLocation: string | null;
            partId: string;
            quantity: number;
            previousStock: number;
            newStock: number;
            referenceType: string | null;
            referenceId: string | null;
            operatorName: string;
            scannedCode: string | null;
            deviceInfo: Prisma.JsonValue | null;
        }[];
        stockAlerts: {
            message: string;
            id: string;
            createdAt: Date;
            status: import("@prisma/client").$Enums.AlertStatus;
            updatedAt: Date;
            severity: import("@prisma/client").$Enums.AlertSeverity;
            alertType: import("@prisma/client").$Enums.StockAlertType;
            acknowledgedAt: Date | null;
            acknowledgedBy: string | null;
            threshold: number;
            resolvedAt: Date | null;
            resolvedBy: string | null;
            resolution: string | null;
            currentStock: number;
            partId: string;
        }[];
        station: string | null;
        id: string;
        createdAt: Date;
        status: import("@prisma/client").$Enums.PartStatus;
        source: string | null;
        metadata: Prisma.JsonValue;
        updatedAt: Date;
        deletedAt: Date | null;
        customFields: Prisma.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;
    }>;
    findByIdentifier(identifier: string): Promise<{
        stockStatus: StockStatus;
        warehouse: {
            code: string;
            id: string;
            nameEn: string;
            nameCn: string | null;
        } | null;
        storageLocation: {
            code: string;
            id: string;
            nameEn: string;
            nameCn: string | null;
            zone: string | null;
        } | null;
        _count: {
            labels: number;
            inventoryLogs: number;
            stockAlerts: number;
        };
        labels: {
            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;
        }[];
        groups: ({
            group: {
                customFields: {
                    type: import("@prisma/client").$Enums.GroupFieldType;
                    id: string;
                    createdAt: Date;
                    updatedAt: Date;
                    deletedAt: Date | null;
                    description: string | null;
                    key: string;
                    nameEn: string;
                    validation: Prisma.JsonValue | null;
                    options: Prisma.JsonValue | null;
                    updatedBy: string | null;
                    createdBy: string | null;
                    required: boolean;
                    editable: boolean;
                    groupId: string;
                    nameCn: string | null;
                    visible: boolean;
                    searchable: boolean;
                    placeholder: string | null;
                    helpText: string | null;
                    displayOrder: number;
                }[];
            } & {
                id: string;
                createdAt: Date;
                name: string;
                updatedAt: Date;
                deletedAt: Date | null;
                description: string | null;
                isActive: boolean;
                updatedBy: string | null;
                createdBy: string | null;
                displayOrder: number;
                partsCount: number;
                fieldsCount: number;
            };
        } & {
            createdAt: Date;
            createdBy: string | null;
            groupId: string;
            partId: string;
        })[];
        inventoryLogs: {
            station: string | null;
            id: string;
            createdAt: Date;
            metadata: Prisma.JsonValue;
            operationType: import("@prisma/client").$Enums.InventoryOperationType;
            reason: string | null;
            operatorId: string;
            warehouseLocation: string | null;
            partId: string;
            quantity: number;
            previousStock: number;
            newStock: number;
            referenceType: string | null;
            referenceId: string | null;
            operatorName: string;
            scannedCode: string | null;
            deviceInfo: Prisma.JsonValue | null;
        }[];
        stockAlerts: {
            message: string;
            id: string;
            createdAt: Date;
            status: import("@prisma/client").$Enums.AlertStatus;
            updatedAt: Date;
            severity: import("@prisma/client").$Enums.AlertSeverity;
            alertType: import("@prisma/client").$Enums.StockAlertType;
            acknowledgedAt: Date | null;
            acknowledgedBy: string | null;
            threshold: number;
            resolvedAt: Date | null;
            resolvedBy: string | null;
            resolution: string | null;
            currentStock: number;
            partId: string;
        }[];
        station: string | null;
        id: string;
        createdAt: Date;
        status: import("@prisma/client").$Enums.PartStatus;
        source: string | null;
        metadata: Prisma.JsonValue;
        updatedAt: Date;
        deletedAt: Date | null;
        customFields: Prisma.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;
    } | {
        stockStatus: StockStatus;
        warehouse: {
            code: string;
            id: string;
            nameEn: string;
            nameCn: string | null;
        } | null;
        storageLocation: {
            code: string;
            id: string;
            nameEn: string;
            nameCn: string | null;
            zone: string | null;
        } | null;
        labels: {
            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;
        }[];
        groups: ({
            group: {
                customFields: {
                    type: import("@prisma/client").$Enums.GroupFieldType;
                    id: string;
                    createdAt: Date;
                    updatedAt: Date;
                    deletedAt: Date | null;
                    description: string | null;
                    key: string;
                    nameEn: string;
                    validation: Prisma.JsonValue | null;
                    options: Prisma.JsonValue | null;
                    updatedBy: string | null;
                    createdBy: string | null;
                    required: boolean;
                    editable: boolean;
                    groupId: string;
                    nameCn: string | null;
                    visible: boolean;
                    searchable: boolean;
                    placeholder: string | null;
                    helpText: string | null;
                    displayOrder: number;
                }[];
            } & {
                id: string;
                createdAt: Date;
                name: string;
                updatedAt: Date;
                deletedAt: Date | null;
                description: string | null;
                isActive: boolean;
                updatedBy: string | null;
                createdBy: string | null;
                displayOrder: number;
                partsCount: number;
                fieldsCount: number;
            };
        } & {
            createdAt: Date;
            createdBy: string | null;
            groupId: string;
            partId: string;
        })[];
        stockAlerts: {
            message: string;
            id: string;
            createdAt: Date;
            status: import("@prisma/client").$Enums.AlertStatus;
            updatedAt: Date;
            severity: import("@prisma/client").$Enums.AlertSeverity;
            alertType: import("@prisma/client").$Enums.StockAlertType;
            acknowledgedAt: Date | null;
            acknowledgedBy: string | null;
            threshold: number;
            resolvedAt: Date | null;
            resolvedBy: string | null;
            resolution: string | null;
            currentStock: number;
            partId: string;
        }[];
        station: string | null;
        id: string;
        createdAt: Date;
        status: import("@prisma/client").$Enums.PartStatus;
        source: string | null;
        metadata: Prisma.JsonValue;
        updatedAt: Date;
        deletedAt: Date | null;
        customFields: Prisma.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;
    }>;
    findByPartNumber(partNumber: string): Promise<{
        stockStatus: StockStatus;
        warehouse: {
            code: string;
            id: string;
            nameEn: string;
            nameCn: string | null;
        } | null;
        storageLocation: {
            code: string;
            id: string;
            nameEn: string;
            nameCn: string | null;
            zone: string | null;
        } | null;
        _count: {
            labels: number;
            inventoryLogs: number;
            stockAlerts: number;
        };
        labels: {
            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;
        }[];
        groups: ({
            group: {
                customFields: {
                    type: import("@prisma/client").$Enums.GroupFieldType;
                    id: string;
                    createdAt: Date;
                    updatedAt: Date;
                    deletedAt: Date | null;
                    description: string | null;
                    key: string;
                    nameEn: string;
                    validation: Prisma.JsonValue | null;
                    options: Prisma.JsonValue | null;
                    updatedBy: string | null;
                    createdBy: string | null;
                    required: boolean;
                    editable: boolean;
                    groupId: string;
                    nameCn: string | null;
                    visible: boolean;
                    searchable: boolean;
                    placeholder: string | null;
                    helpText: string | null;
                    displayOrder: number;
                }[];
            } & {
                id: string;
                createdAt: Date;
                name: string;
                updatedAt: Date;
                deletedAt: Date | null;
                description: string | null;
                isActive: boolean;
                updatedBy: string | null;
                createdBy: string | null;
                displayOrder: number;
                partsCount: number;
                fieldsCount: number;
            };
        } & {
            createdAt: Date;
            createdBy: string | null;
            groupId: string;
            partId: string;
        })[];
        inventoryLogs: {
            station: string | null;
            id: string;
            createdAt: Date;
            metadata: Prisma.JsonValue;
            operationType: import("@prisma/client").$Enums.InventoryOperationType;
            reason: string | null;
            operatorId: string;
            warehouseLocation: string | null;
            partId: string;
            quantity: number;
            previousStock: number;
            newStock: number;
            referenceType: string | null;
            referenceId: string | null;
            operatorName: string;
            scannedCode: string | null;
            deviceInfo: Prisma.JsonValue | null;
        }[];
        stockAlerts: {
            message: string;
            id: string;
            createdAt: Date;
            status: import("@prisma/client").$Enums.AlertStatus;
            updatedAt: Date;
            severity: import("@prisma/client").$Enums.AlertSeverity;
            alertType: import("@prisma/client").$Enums.StockAlertType;
            acknowledgedAt: Date | null;
            acknowledgedBy: string | null;
            threshold: number;
            resolvedAt: Date | null;
            resolvedBy: string | null;
            resolution: string | null;
            currentStock: number;
            partId: string;
        }[];
        station: string | null;
        id: string;
        createdAt: Date;
        status: import("@prisma/client").$Enums.PartStatus;
        source: string | null;
        metadata: Prisma.JsonValue;
        updatedAt: Date;
        deletedAt: Date | null;
        customFields: Prisma.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;
    } | {
        stockStatus: StockStatus;
        warehouse: {
            code: string;
            id: string;
            nameEn: string;
            nameCn: string | null;
        } | null;
        storageLocation: {
            code: string;
            id: string;
            nameEn: string;
            nameCn: string | null;
            zone: string | null;
        } | null;
        labels: {
            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;
        }[];
        groups: ({
            group: {
                customFields: {
                    type: import("@prisma/client").$Enums.GroupFieldType;
                    id: string;
                    createdAt: Date;
                    updatedAt: Date;
                    deletedAt: Date | null;
                    description: string | null;
                    key: string;
                    nameEn: string;
                    validation: Prisma.JsonValue | null;
                    options: Prisma.JsonValue | null;
                    updatedBy: string | null;
                    createdBy: string | null;
                    required: boolean;
                    editable: boolean;
                    groupId: string;
                    nameCn: string | null;
                    visible: boolean;
                    searchable: boolean;
                    placeholder: string | null;
                    helpText: string | null;
                    displayOrder: number;
                }[];
            } & {
                id: string;
                createdAt: Date;
                name: string;
                updatedAt: Date;
                deletedAt: Date | null;
                description: string | null;
                isActive: boolean;
                updatedBy: string | null;
                createdBy: string | null;
                displayOrder: number;
                partsCount: number;
                fieldsCount: number;
            };
        } & {
            createdAt: Date;
            createdBy: string | null;
            groupId: string;
            partId: string;
        })[];
        stockAlerts: {
            message: string;
            id: string;
            createdAt: Date;
            status: import("@prisma/client").$Enums.AlertStatus;
            updatedAt: Date;
            severity: import("@prisma/client").$Enums.AlertSeverity;
            alertType: import("@prisma/client").$Enums.StockAlertType;
            acknowledgedAt: Date | null;
            acknowledgedBy: string | null;
            threshold: number;
            resolvedAt: Date | null;
            resolvedBy: string | null;
            resolution: string | null;
            currentStock: number;
            partId: string;
        }[];
        station: string | null;
        id: string;
        createdAt: Date;
        status: import("@prisma/client").$Enums.PartStatus;
        source: string | null;
        metadata: Prisma.JsonValue;
        updatedAt: Date;
        deletedAt: Date | null;
        customFields: Prisma.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;
    }>;
    findByCode(code: string): Promise<{
        stockStatus: StockStatus;
        warehouse: {
            code: string;
            id: string;
            nameEn: string;
            nameCn: string | null;
        } | null;
        storageLocation: {
            code: string;
            id: string;
            nameEn: string;
            nameCn: string | null;
            zone: string | null;
        } | null;
        _count: {
            labels: number;
            inventoryLogs: number;
            stockAlerts: number;
        };
        labels: {
            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;
        }[];
        groups: ({
            group: {
                customFields: {
                    type: import("@prisma/client").$Enums.GroupFieldType;
                    id: string;
                    createdAt: Date;
                    updatedAt: Date;
                    deletedAt: Date | null;
                    description: string | null;
                    key: string;
                    nameEn: string;
                    validation: Prisma.JsonValue | null;
                    options: Prisma.JsonValue | null;
                    updatedBy: string | null;
                    createdBy: string | null;
                    required: boolean;
                    editable: boolean;
                    groupId: string;
                    nameCn: string | null;
                    visible: boolean;
                    searchable: boolean;
                    placeholder: string | null;
                    helpText: string | null;
                    displayOrder: number;
                }[];
            } & {
                id: string;
                createdAt: Date;
                name: string;
                updatedAt: Date;
                deletedAt: Date | null;
                description: string | null;
                isActive: boolean;
                updatedBy: string | null;
                createdBy: string | null;
                displayOrder: number;
                partsCount: number;
                fieldsCount: number;
            };
        } & {
            createdAt: Date;
            createdBy: string | null;
            groupId: string;
            partId: string;
        })[];
        inventoryLogs: {
            station: string | null;
            id: string;
            createdAt: Date;
            metadata: Prisma.JsonValue;
            operationType: import("@prisma/client").$Enums.InventoryOperationType;
            reason: string | null;
            operatorId: string;
            warehouseLocation: string | null;
            partId: string;
            quantity: number;
            previousStock: number;
            newStock: number;
            referenceType: string | null;
            referenceId: string | null;
            operatorName: string;
            scannedCode: string | null;
            deviceInfo: Prisma.JsonValue | null;
        }[];
        stockAlerts: {
            message: string;
            id: string;
            createdAt: Date;
            status: import("@prisma/client").$Enums.AlertStatus;
            updatedAt: Date;
            severity: import("@prisma/client").$Enums.AlertSeverity;
            alertType: import("@prisma/client").$Enums.StockAlertType;
            acknowledgedAt: Date | null;
            acknowledgedBy: string | null;
            threshold: number;
            resolvedAt: Date | null;
            resolvedBy: string | null;
            resolution: string | null;
            currentStock: number;
            partId: string;
        }[];
        station: string | null;
        id: string;
        createdAt: Date;
        status: import("@prisma/client").$Enums.PartStatus;
        source: string | null;
        metadata: Prisma.JsonValue;
        updatedAt: Date;
        deletedAt: Date | null;
        customFields: Prisma.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;
    } | {
        stockStatus: StockStatus;
        warehouse: {
            code: string;
            id: string;
            nameEn: string;
            nameCn: string | null;
        } | null;
        storageLocation: {
            code: string;
            id: string;
            nameEn: string;
            nameCn: string | null;
            zone: string | null;
        } | null;
        labels: {
            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;
        }[];
        groups: ({
            group: {
                customFields: {
                    type: import("@prisma/client").$Enums.GroupFieldType;
                    id: string;
                    createdAt: Date;
                    updatedAt: Date;
                    deletedAt: Date | null;
                    description: string | null;
                    key: string;
                    nameEn: string;
                    validation: Prisma.JsonValue | null;
                    options: Prisma.JsonValue | null;
                    updatedBy: string | null;
                    createdBy: string | null;
                    required: boolean;
                    editable: boolean;
                    groupId: string;
                    nameCn: string | null;
                    visible: boolean;
                    searchable: boolean;
                    placeholder: string | null;
                    helpText: string | null;
                    displayOrder: number;
                }[];
            } & {
                id: string;
                createdAt: Date;
                name: string;
                updatedAt: Date;
                deletedAt: Date | null;
                description: string | null;
                isActive: boolean;
                updatedBy: string | null;
                createdBy: string | null;
                displayOrder: number;
                partsCount: number;
                fieldsCount: number;
            };
        } & {
            createdAt: Date;
            createdBy: string | null;
            groupId: string;
            partId: string;
        })[];
        stockAlerts: {
            message: string;
            id: string;
            createdAt: Date;
            status: import("@prisma/client").$Enums.AlertStatus;
            updatedAt: Date;
            severity: import("@prisma/client").$Enums.AlertSeverity;
            alertType: import("@prisma/client").$Enums.StockAlertType;
            acknowledgedAt: Date | null;
            acknowledgedBy: string | null;
            threshold: number;
            resolvedAt: Date | null;
            resolvedBy: string | null;
            resolution: string | null;
            currentStock: number;
            partId: string;
        }[];
        station: string | null;
        id: string;
        createdAt: Date;
        status: import("@prisma/client").$Enums.PartStatus;
        source: string | null;
        metadata: Prisma.JsonValue;
        updatedAt: Date;
        deletedAt: Date | null;
        customFields: Prisma.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;
    }>;
    updateByIdentifier(identifier: string, updatePartDto: UpdatePartDto, userId: string): Promise<{
        labels: {
            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;
        }[];
        stockAlerts: {
            message: string;
            id: string;
            createdAt: Date;
            status: import("@prisma/client").$Enums.AlertStatus;
            updatedAt: Date;
            severity: import("@prisma/client").$Enums.AlertSeverity;
            alertType: import("@prisma/client").$Enums.StockAlertType;
            acknowledgedAt: Date | null;
            acknowledgedBy: string | null;
            threshold: number;
            resolvedAt: Date | null;
            resolvedBy: string | null;
            resolution: string | null;
            currentStock: number;
            partId: string;
        }[];
    } & {
        station: string | null;
        id: string;
        createdAt: Date;
        status: import("@prisma/client").$Enums.PartStatus;
        source: string | null;
        metadata: Prisma.JsonValue;
        updatedAt: Date;
        deletedAt: Date | null;
        customFields: Prisma.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;
    }>;
    update(id: string, updatePartDto: UpdatePartDto, userId: string): Promise<{
        labels: {
            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;
        }[];
        stockAlerts: {
            message: string;
            id: string;
            createdAt: Date;
            status: import("@prisma/client").$Enums.AlertStatus;
            updatedAt: Date;
            severity: import("@prisma/client").$Enums.AlertSeverity;
            alertType: import("@prisma/client").$Enums.StockAlertType;
            acknowledgedAt: Date | null;
            acknowledgedBy: string | null;
            threshold: number;
            resolvedAt: Date | null;
            resolvedBy: string | null;
            resolution: string | null;
            currentStock: number;
            partId: string;
        }[];
    } & {
        station: string | null;
        id: string;
        createdAt: Date;
        status: import("@prisma/client").$Enums.PartStatus;
        source: string | null;
        metadata: Prisma.JsonValue;
        updatedAt: Date;
        deletedAt: Date | null;
        customFields: Prisma.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;
    }>;
    removeByIdentifier(identifier: string, userId: string): Promise<{
        message: string;
    }>;
    remove(id: string, userId: string): Promise<{
        message: string;
    }>;
    bulkImport(bulkImportDto: BulkImportPartsDto, userId: string, userName: string): Promise<{
        total: number;
        success: number;
        failed: number;
        updated: number;
        errors: any[];
    }>;
    getInventoryStats(query?: {
        station?: string;
        warehouseLocation?: string;
        category?: string;
    }): Promise<{
        totalParts: number;
        activeParts: number;
        lowStockParts: number;
        outOfStockParts: number;
        totalStock: number;
        stationStats: (Prisma.PickEnumerable<Prisma.PartGroupByOutputType, "station"[]> & {
            _count: number;
            _sum: {
                currentStock: number | null;
            };
        })[];
    }>;
    getCategories(): Promise<never[]>;
    getStations(): Promise<string[]>;
    getWarehouseLocations(): Promise<string[]>;
    checkStockAndCreateAlerts(partId: string): Promise<void>;
}
