import type { CurrentUserPayload } from "../../common/decorators/current-user.decorator";
import { RobotUnitService } from './services/robot-unit.service';
import { RobotLifecycleService } from './services/robot-lifecycle.service';
import { BulkChangeStageDto, ChangeStageDto, CreateRobotUnitDto, HoldStageDto, MoveLocationDto, ActivateSnDto, QueryRobotUnitDto, UpdateRobotUnitDto } from './dto/robot-unit.dto';
export declare class RobotUnitController {
    private readonly robotUnitService;
    private readonly lifecycleService;
    constructor(robotUnitService: RobotUnitService, lifecycleService: RobotLifecycleService);
    findAll(query: QueryRobotUnitDto): Promise<{
        items: ({
            purchaseOrder: {
                id: string;
                supplierId: string;
                poNo: string;
                orderedAt: Date;
            } | null;
            purchaseOrderLine: {
                id: string;
                currencyCode: string;
                lineNo: number;
                unitPrice: import("@prisma/client/runtime/library").Decimal;
            } | null;
            snapshot: {
                version: number;
                lastEventId: string | null;
                robotUnitId: string;
                currentStage: import("@prisma/client").$Enums.RobotLifecycleStage;
                isHeld: boolean;
                holdReason: string | null;
                currentLocationId: string | null;
                currentCustomerId: string | null;
                currentSalesOrderId: string | null;
                currentDeliveryRequestId: string | null;
                currentSpecialistId: string | null;
                physicalProductStatus: import("@prisma/client").$Enums.RobotPhysicalStatus | null;
                daysReadyForDelivery: number | null;
                warrantyStatus: import("@prisma/client").$Enums.RobotWarrantyStatus | null;
                lastEventAt: Date | null;
                derivedAt: Date;
            } | null;
            model: {
                code: string;
                id: string;
                name: string;
            };
            sku: {
                code: string;
                id: string;
                name: string;
                variant: string | null;
            };
        } & {
            id: string;
            createdAt: Date;
            metadata: import("@prisma/client/runtime/library").JsonValue;
            updatedAt: Date;
            deletedAt: Date | null;
            organizationId: string;
            createdById: string;
            version: number;
            modelId: string;
            ffsn: string;
            ffsnDisplay: string | null;
            placeholderSnOrig: string | null;
            supplierSn: string | null;
            skuId: string;
            usageType: import("@prisma/client").$Enums.RobotUsageType;
            purchaseOrderId: string | null;
            purchaseOrderLineId: string | null;
            originalSupplierId: string | null;
            manufactureDate: Date | null;
            retiredAt: Date | null;
            disposalType: import("@prisma/client").$Enums.RobotDisposalType | null;
            disposalNotes: string | null;
            sapMaterialNo: string | null;
        })[];
        total: number;
        page: number;
        limit: number;
        totalPages: number;
        hasNext: boolean;
        hasPrev: boolean;
    }>;
    create(dto: CreateRobotUnitDto, user: CurrentUserPayload): Promise<{
        purchaseOrder: {
            id: string;
            supplierId: string;
            poNo: string;
        } | null;
        purchaseOrderLine: {
            id: string;
            lineNo: number;
            unitPrice: import("@prisma/client/runtime/library").Decimal;
        } | null;
        snapshot: {
            version: number;
            lastEventId: string | null;
            robotUnitId: string;
            currentStage: import("@prisma/client").$Enums.RobotLifecycleStage;
            isHeld: boolean;
            holdReason: string | null;
            currentLocationId: string | null;
            currentCustomerId: string | null;
            currentSalesOrderId: string | null;
            currentDeliveryRequestId: string | null;
            currentSpecialistId: string | null;
            physicalProductStatus: import("@prisma/client").$Enums.RobotPhysicalStatus | null;
            daysReadyForDelivery: number | null;
            warrantyStatus: import("@prisma/client").$Enums.RobotWarrantyStatus | null;
            lastEventAt: Date | null;
            derivedAt: Date;
        } | null;
        events: {
            id: string;
            createdAt: Date;
            deletedAt: Date | null;
            organizationId: string;
            createdById: string;
            eventType: import("@prisma/client").$Enums.RobotLifecycleEventType;
            notes: string | null;
            payload: import("@prisma/client/runtime/library").JsonValue;
            partnerId: string | null;
            robotUnitId: string;
            customerId: string | null;
            toStage: import("@prisma/client").$Enums.RobotLifecycleStage | null;
            toLocationId: string | null;
            occurredAt: Date;
            fromStage: import("@prisma/client").$Enums.RobotLifecycleStage | null;
            fromLocationId: string | null;
            actorUserId: string | null;
            relatedType: import("@prisma/client").$Enums.RobotEventRelatedType | null;
            relatedId: string | null;
        }[];
        model: {
            code: string;
            id: string;
            createdAt: Date;
            name: string;
            metadata: import("@prisma/client/runtime/library").JsonValue;
            updatedAt: Date;
            deletedAt: Date | null;
            description: string | null;
            organizationId: string;
            createdById: string;
            enabled: boolean;
            imageUrl: string | null;
            brand: string | null;
        };
        sku: {
            model: {
                code: string;
                id: string;
                name: string;
            };
        } & {
            code: string;
            id: string;
            createdAt: Date;
            name: string;
            metadata: import("@prisma/client/runtime/library").JsonValue;
            updatedAt: Date;
            deletedAt: Date | null;
            description: string | null;
            organizationId: string;
            createdById: string;
            enabled: boolean;
            currencyCode: string | null;
            modelId: string;
            variant: string | null;
            defaultPrice: import("@prisma/client/runtime/library").Decimal | null;
            defaultCost: import("@prisma/client/runtime/library").Decimal | null;
        };
    } & {
        id: string;
        createdAt: Date;
        metadata: import("@prisma/client/runtime/library").JsonValue;
        updatedAt: Date;
        deletedAt: Date | null;
        organizationId: string;
        createdById: string;
        version: number;
        modelId: string;
        ffsn: string;
        ffsnDisplay: string | null;
        placeholderSnOrig: string | null;
        supplierSn: string | null;
        skuId: string;
        usageType: import("@prisma/client").$Enums.RobotUsageType;
        purchaseOrderId: string | null;
        purchaseOrderLineId: string | null;
        originalSupplierId: string | null;
        manufactureDate: Date | null;
        retiredAt: Date | null;
        disposalType: import("@prisma/client").$Enums.RobotDisposalType | null;
        disposalNotes: string | null;
        sapMaterialNo: string | null;
    }>;
    findByFfsn(ffsn: string): Promise<{
        id: string;
        ffsn: string;
    }>;
    findOne(id: string): Promise<{
        purchaseOrder: {
            id: string;
            supplierId: string;
            poNo: string;
        } | null;
        purchaseOrderLine: {
            id: string;
            lineNo: number;
            unitPrice: import("@prisma/client/runtime/library").Decimal;
        } | null;
        snapshot: {
            version: number;
            lastEventId: string | null;
            robotUnitId: string;
            currentStage: import("@prisma/client").$Enums.RobotLifecycleStage;
            isHeld: boolean;
            holdReason: string | null;
            currentLocationId: string | null;
            currentCustomerId: string | null;
            currentSalesOrderId: string | null;
            currentDeliveryRequestId: string | null;
            currentSpecialistId: string | null;
            physicalProductStatus: import("@prisma/client").$Enums.RobotPhysicalStatus | null;
            daysReadyForDelivery: number | null;
            warrantyStatus: import("@prisma/client").$Enums.RobotWarrantyStatus | null;
            lastEventAt: Date | null;
            derivedAt: Date;
        } | null;
        events: {
            id: string;
            createdAt: Date;
            deletedAt: Date | null;
            organizationId: string;
            createdById: string;
            eventType: import("@prisma/client").$Enums.RobotLifecycleEventType;
            notes: string | null;
            payload: import("@prisma/client/runtime/library").JsonValue;
            partnerId: string | null;
            robotUnitId: string;
            customerId: string | null;
            toStage: import("@prisma/client").$Enums.RobotLifecycleStage | null;
            toLocationId: string | null;
            occurredAt: Date;
            fromStage: import("@prisma/client").$Enums.RobotLifecycleStage | null;
            fromLocationId: string | null;
            actorUserId: string | null;
            relatedType: import("@prisma/client").$Enums.RobotEventRelatedType | null;
            relatedId: string | null;
        }[];
        model: {
            code: string;
            id: string;
            createdAt: Date;
            name: string;
            metadata: import("@prisma/client/runtime/library").JsonValue;
            updatedAt: Date;
            deletedAt: Date | null;
            description: string | null;
            organizationId: string;
            createdById: string;
            enabled: boolean;
            imageUrl: string | null;
            brand: string | null;
        };
        sku: {
            model: {
                code: string;
                id: string;
                name: string;
            };
        } & {
            code: string;
            id: string;
            createdAt: Date;
            name: string;
            metadata: import("@prisma/client/runtime/library").JsonValue;
            updatedAt: Date;
            deletedAt: Date | null;
            description: string | null;
            organizationId: string;
            createdById: string;
            enabled: boolean;
            currencyCode: string | null;
            modelId: string;
            variant: string | null;
            defaultPrice: import("@prisma/client/runtime/library").Decimal | null;
            defaultCost: import("@prisma/client/runtime/library").Decimal | null;
        };
    } & {
        id: string;
        createdAt: Date;
        metadata: import("@prisma/client/runtime/library").JsonValue;
        updatedAt: Date;
        deletedAt: Date | null;
        organizationId: string;
        createdById: string;
        version: number;
        modelId: string;
        ffsn: string;
        ffsnDisplay: string | null;
        placeholderSnOrig: string | null;
        supplierSn: string | null;
        skuId: string;
        usageType: import("@prisma/client").$Enums.RobotUsageType;
        purchaseOrderId: string | null;
        purchaseOrderLineId: string | null;
        originalSupplierId: string | null;
        manufactureDate: Date | null;
        retiredAt: Date | null;
        disposalType: import("@prisma/client").$Enums.RobotDisposalType | null;
        disposalNotes: string | null;
        sapMaterialNo: string | null;
    }>;
    update(id: string, dto: UpdateRobotUnitDto, user: CurrentUserPayload): Promise<{
        purchaseOrder: {
            id: string;
            supplierId: string;
            poNo: string;
        } | null;
        purchaseOrderLine: {
            id: string;
            lineNo: number;
            unitPrice: import("@prisma/client/runtime/library").Decimal;
        } | null;
        snapshot: {
            version: number;
            lastEventId: string | null;
            robotUnitId: string;
            currentStage: import("@prisma/client").$Enums.RobotLifecycleStage;
            isHeld: boolean;
            holdReason: string | null;
            currentLocationId: string | null;
            currentCustomerId: string | null;
            currentSalesOrderId: string | null;
            currentDeliveryRequestId: string | null;
            currentSpecialistId: string | null;
            physicalProductStatus: import("@prisma/client").$Enums.RobotPhysicalStatus | null;
            daysReadyForDelivery: number | null;
            warrantyStatus: import("@prisma/client").$Enums.RobotWarrantyStatus | null;
            lastEventAt: Date | null;
            derivedAt: Date;
        } | null;
        events: {
            id: string;
            createdAt: Date;
            deletedAt: Date | null;
            organizationId: string;
            createdById: string;
            eventType: import("@prisma/client").$Enums.RobotLifecycleEventType;
            notes: string | null;
            payload: import("@prisma/client/runtime/library").JsonValue;
            partnerId: string | null;
            robotUnitId: string;
            customerId: string | null;
            toStage: import("@prisma/client").$Enums.RobotLifecycleStage | null;
            toLocationId: string | null;
            occurredAt: Date;
            fromStage: import("@prisma/client").$Enums.RobotLifecycleStage | null;
            fromLocationId: string | null;
            actorUserId: string | null;
            relatedType: import("@prisma/client").$Enums.RobotEventRelatedType | null;
            relatedId: string | null;
        }[];
        model: {
            code: string;
            id: string;
            createdAt: Date;
            name: string;
            metadata: import("@prisma/client/runtime/library").JsonValue;
            updatedAt: Date;
            deletedAt: Date | null;
            description: string | null;
            organizationId: string;
            createdById: string;
            enabled: boolean;
            imageUrl: string | null;
            brand: string | null;
        };
        sku: {
            model: {
                code: string;
                id: string;
                name: string;
            };
        } & {
            code: string;
            id: string;
            createdAt: Date;
            name: string;
            metadata: import("@prisma/client/runtime/library").JsonValue;
            updatedAt: Date;
            deletedAt: Date | null;
            description: string | null;
            organizationId: string;
            createdById: string;
            enabled: boolean;
            currencyCode: string | null;
            modelId: string;
            variant: string | null;
            defaultPrice: import("@prisma/client/runtime/library").Decimal | null;
            defaultCost: import("@prisma/client/runtime/library").Decimal | null;
        };
    } & {
        id: string;
        createdAt: Date;
        metadata: import("@prisma/client/runtime/library").JsonValue;
        updatedAt: Date;
        deletedAt: Date | null;
        organizationId: string;
        createdById: string;
        version: number;
        modelId: string;
        ffsn: string;
        ffsnDisplay: string | null;
        placeholderSnOrig: string | null;
        supplierSn: string | null;
        skuId: string;
        usageType: import("@prisma/client").$Enums.RobotUsageType;
        purchaseOrderId: string | null;
        purchaseOrderLineId: string | null;
        originalSupplierId: string | null;
        manufactureDate: Date | null;
        retiredAt: Date | null;
        disposalType: import("@prisma/client").$Enums.RobotDisposalType | null;
        disposalNotes: string | null;
        sapMaterialNo: string | null;
    }>;
    softDelete(id: string, user: CurrentUserPayload): Promise<{
        message: string;
    }>;
    changeStage(id: string, dto: ChangeStageDto, user: CurrentUserPayload): Promise<{
        snapshot: {
            currentStage: import("@prisma/client").$Enums.RobotLifecycleStage;
            lastEventId: string;
            lastEventAt: Date;
            version: number;
            robotUnitId: string;
            isHeld: boolean;
            holdReason: string | null;
            currentLocationId: string | null;
            currentCustomerId: string | null;
            currentSalesOrderId: string | null;
            currentDeliveryRequestId: string | null;
            currentSpecialistId: string | null;
            physicalProductStatus: import("@prisma/client").$Enums.RobotPhysicalStatus | null;
            daysReadyForDelivery: number | null;
            warrantyStatus: import("@prisma/client").$Enums.RobotWarrantyStatus | null;
            derivedAt: Date;
        };
        id: string;
        createdAt: Date;
        metadata: import("@prisma/client/runtime/library").JsonValue;
        updatedAt: Date;
        deletedAt: Date | null;
        organizationId: string;
        createdById: string;
        version: number;
        modelId: string;
        ffsn: string;
        ffsnDisplay: string | null;
        placeholderSnOrig: string | null;
        supplierSn: string | null;
        skuId: string;
        usageType: import("@prisma/client").$Enums.RobotUsageType;
        purchaseOrderId: string | null;
        purchaseOrderLineId: string | null;
        originalSupplierId: string | null;
        manufactureDate: Date | null;
        retiredAt: Date | null;
        disposalType: import("@prisma/client").$Enums.RobotDisposalType | null;
        disposalNotes: string | null;
        sapMaterialNo: string | null;
    }>;
    bulkChangeStage(dto: BulkChangeStageDto, user: CurrentUserPayload): Promise<{
        success: string[];
        failed: {
            id: string;
            reason: string;
            reasons?: string[];
        }[];
    }>;
    hold(id: string, dto: HoldStageDto, user: CurrentUserPayload): Promise<{
        id: string;
        createdAt: Date;
        deletedAt: Date | null;
        organizationId: string;
        createdById: string;
        eventType: import("@prisma/client").$Enums.RobotLifecycleEventType;
        notes: string | null;
        payload: import("@prisma/client/runtime/library").JsonValue;
        partnerId: string | null;
        robotUnitId: string;
        customerId: string | null;
        toStage: import("@prisma/client").$Enums.RobotLifecycleStage | null;
        toLocationId: string | null;
        occurredAt: Date;
        fromStage: import("@prisma/client").$Enums.RobotLifecycleStage | null;
        fromLocationId: string | null;
        actorUserId: string | null;
        relatedType: import("@prisma/client").$Enums.RobotEventRelatedType | null;
        relatedId: string | null;
    }>;
    unhold(id: string, user: CurrentUserPayload): Promise<{
        id: string;
        createdAt: Date;
        deletedAt: Date | null;
        organizationId: string;
        createdById: string;
        eventType: import("@prisma/client").$Enums.RobotLifecycleEventType;
        notes: string | null;
        payload: import("@prisma/client/runtime/library").JsonValue;
        partnerId: string | null;
        robotUnitId: string;
        customerId: string | null;
        toStage: import("@prisma/client").$Enums.RobotLifecycleStage | null;
        toLocationId: string | null;
        occurredAt: Date;
        fromStage: import("@prisma/client").$Enums.RobotLifecycleStage | null;
        fromLocationId: string | null;
        actorUserId: string | null;
        relatedType: import("@prisma/client").$Enums.RobotEventRelatedType | null;
        relatedId: string | null;
    }>;
    moveLocation(id: string, dto: MoveLocationDto, user: CurrentUserPayload): Promise<{
        id: string;
        createdAt: Date;
        deletedAt: Date | null;
        organizationId: string;
        createdById: string;
        eventType: import("@prisma/client").$Enums.RobotLifecycleEventType;
        notes: string | null;
        payload: import("@prisma/client/runtime/library").JsonValue;
        partnerId: string | null;
        robotUnitId: string;
        customerId: string | null;
        toStage: import("@prisma/client").$Enums.RobotLifecycleStage | null;
        toLocationId: string | null;
        occurredAt: Date;
        fromStage: import("@prisma/client").$Enums.RobotLifecycleStage | null;
        fromLocationId: string | null;
        actorUserId: string | null;
        relatedType: import("@prisma/client").$Enums.RobotEventRelatedType | null;
        relatedId: string | null;
    }>;
    activateSn(id: string, dto: ActivateSnDto, user: CurrentUserPayload): Promise<({
        snapshot: {
            version: number;
            lastEventId: string | null;
            robotUnitId: string;
            currentStage: import("@prisma/client").$Enums.RobotLifecycleStage;
            isHeld: boolean;
            holdReason: string | null;
            currentLocationId: string | null;
            currentCustomerId: string | null;
            currentSalesOrderId: string | null;
            currentDeliveryRequestId: string | null;
            currentSpecialistId: string | null;
            physicalProductStatus: import("@prisma/client").$Enums.RobotPhysicalStatus | null;
            daysReadyForDelivery: number | null;
            warrantyStatus: import("@prisma/client").$Enums.RobotWarrantyStatus | null;
            lastEventAt: Date | null;
            derivedAt: Date;
        } | null;
    } & {
        id: string;
        createdAt: Date;
        metadata: import("@prisma/client/runtime/library").JsonValue;
        updatedAt: Date;
        deletedAt: Date | null;
        organizationId: string;
        createdById: string;
        version: number;
        modelId: string;
        ffsn: string;
        ffsnDisplay: string | null;
        placeholderSnOrig: string | null;
        supplierSn: string | null;
        skuId: string;
        usageType: import("@prisma/client").$Enums.RobotUsageType;
        purchaseOrderId: string | null;
        purchaseOrderLineId: string | null;
        originalSupplierId: string | null;
        manufactureDate: Date | null;
        retiredAt: Date | null;
        disposalType: import("@prisma/client").$Enums.RobotDisposalType | null;
        disposalNotes: string | null;
        sapMaterialNo: string | null;
    }) | null>;
    listEvents(id: string, limit?: string): Promise<{
        id: string;
        createdAt: Date;
        deletedAt: Date | null;
        organizationId: string;
        createdById: string;
        eventType: import("@prisma/client").$Enums.RobotLifecycleEventType;
        notes: string | null;
        payload: import("@prisma/client/runtime/library").JsonValue;
        partnerId: string | null;
        robotUnitId: string;
        customerId: string | null;
        toStage: import("@prisma/client").$Enums.RobotLifecycleStage | null;
        toLocationId: string | null;
        occurredAt: Date;
        fromStage: import("@prisma/client").$Enums.RobotLifecycleStage | null;
        fromLocationId: string | null;
        actorUserId: string | null;
        relatedType: import("@prisma/client").$Enums.RobotEventRelatedType | null;
        relatedId: string | null;
    }[]>;
    allowedNextStages(id: string): Promise<import("@prisma/client").$Enums.RobotLifecycleStage[]>;
}
