import { Prisma } from '@prisma/client';
import { PrismaService } from '../../prisma/prisma.service';
import { AuthenticatedUser } from '../../common/decorators/current-user.decorator';
interface CreatePlanInput {
    complexId: string;
    title: string;
    equipment: string;
    frequencyDays: number;
    nextDueDate: Date;
    providerId?: string;
}
interface CompleteEventInput {
    eventId: string;
    reportUrl?: string;
    notes?: string;
}
export declare class MaintenanceService {
    private readonly prisma;
    private readonly logger;
    constructor(prisma: PrismaService);
    private assertComplexAccess;
    createPlan(user: AuthenticatedUser, dto: CreatePlanInput): Promise<{
        id: string;
        createdAt: Date;
        updatedAt: Date;
        complexId: string;
        enabled: boolean;
        title: string;
        equipment: string;
        frequencyDays: number;
        nextDueDate: Date;
        providerId: string | null;
    }>;
    listPlans(user: AuthenticatedUser, complexId?: string): Promise<({
        provider: {
            id: string;
            name: string;
            createdAt: Date;
            legalId: string | null;
            tenantId: string;
            contact: string | null;
            iban: string | null;
        } | null;
        events: {
            id: string;
            createdAt: Date;
            status: import(".prisma/client").$Enums.MaintenanceStatus;
            planId: string;
            notes: string | null;
            dueDate: Date;
            reportUrl: string | null;
            executedAt: Date | null;
        }[];
    } & {
        id: string;
        createdAt: Date;
        updatedAt: Date;
        complexId: string;
        enabled: boolean;
        title: string;
        equipment: string;
        frequencyDays: number;
        nextDueDate: Date;
        providerId: string | null;
    })[]>;
    listEvents(user: AuthenticatedUser, complexId: string): Promise<({
        plan: {
            id: string;
            createdAt: Date;
            updatedAt: Date;
            complexId: string;
            enabled: boolean;
            title: string;
            equipment: string;
            frequencyDays: number;
            nextDueDate: Date;
            providerId: string | null;
        };
    } & {
        id: string;
        createdAt: Date;
        status: import(".prisma/client").$Enums.MaintenanceStatus;
        planId: string;
        notes: string | null;
        dueDate: Date;
        reportUrl: string | null;
        executedAt: Date | null;
    })[]>;
    completeEvent(user: AuthenticatedUser, dto: CompleteEventInput): Promise<{
        completed: {
            id: string;
            createdAt: Date;
            status: import(".prisma/client").$Enums.MaintenanceStatus;
            planId: string;
            notes: string | null;
            dueDate: Date;
            reportUrl: string | null;
            executedAt: Date | null;
        };
        next: {
            id: string;
            createdAt: Date;
            status: import(".prisma/client").$Enums.MaintenanceStatus;
            planId: string;
            notes: string | null;
            dueDate: Date;
            reportUrl: string | null;
            executedAt: Date | null;
        };
    }>;
    markDueEvents(): Promise<Prisma.BatchPayload>;
    triggerNow(): Promise<Prisma.BatchPayload>;
}
export {};
