import { PrismaService } from "../../../core/database/prisma/prisma.service";
import { Prisma, RobotLifecycleStage } from '@prisma/client';
export type GuardResult = {
    ok: boolean;
    reasons?: string[];
};
export declare class LifecycleGuardsService {
    private readonly prisma;
    private readonly logger;
    constructor(prisma: PrismaService);
    check(tx: Prisma.TransactionClient | PrismaService, robotUnitId: string, fromStage: RobotLifecycleStage, toStage: RobotLifecycleStage): Promise<GuardResult>;
    checkFunctionTest(tx: Prisma.TransactionClient | PrismaService, robotUnitId: string): Promise<GuardResult>;
    checkConversionValidated(tx: Prisma.TransactionClient | PrismaService, robotUnitId: string): Promise<GuardResult>;
    checkDeliveryValidation(tx: Prisma.TransactionClient | PrismaService, robotUnitId: string): Promise<GuardResult>;
    checkG5Payment(tx: Prisma.TransactionClient | PrismaService, robotUnitId: string): Promise<GuardResult>;
    checkPGIReady(tx: Prisma.TransactionClient | PrismaService, robotUnitId: string): Promise<GuardResult>;
    checkRMAEligible(tx: Prisma.TransactionClient | PrismaService, robotUnitId: string): Promise<GuardResult>;
    checkQuoteApproved(_tx: Prisma.TransactionClient | PrismaService, _robotUnitId: string): Promise<GuardResult>;
    checkPOHasSupplier(tx: Prisma.TransactionClient | PrismaService, poData: {
        supplierId: string;
    }): Promise<GuardResult>;
    checkSONeedsCustomer(tx: Prisma.TransactionClient | PrismaService, soData: {
        customerId: string;
        currencyCode: string;
    }): Promise<GuardResult>;
    checkReserveRequiresBranded(tx: Prisma.TransactionClient | PrismaService, robotUnitId: string, fromStage: RobotLifecycleStage): Promise<GuardResult>;
    checkClosedNeedsDisposal(tx: Prisma.TransactionClient | PrismaService, robotUnitId: string): Promise<GuardResult>;
    checkRentalNeedsContract(tx: Prisma.TransactionClient | PrismaService, robotUnitId: string): Promise<GuardResult>;
    checkD2EligibleWindow(tx: Prisma.TransactionClient | PrismaService, robotUnitId: string): Promise<GuardResult>;
    checkPlaceholderActivated(tx: Prisma.TransactionClient | PrismaService, robotUnitId: string): Promise<GuardResult>;
}
