import { DevItemStatus, DevItemType, DevItemSeverity } from '@prisma/client';
import { ItemsRepository } from '../repositories/items.repository';
export interface CurrentUserInfo {
    userId: string;
    roles?: string[];
}
export declare class ItemsService {
    private readonly repository;
    constructor(repository: ItemsRepository);
    private isAdmin;
    private getTypeAbbr;
    private ensureModuleName;
    private getModuleAbbr;
    findAll(query: any): Promise<{
        items: {
            title: string;
            code: string;
            id: string;
            createdAt: Date;
            status: import("@prisma/client").$Enums.DevItemStatus;
            updatedAt: Date;
            deletedAt: Date | null;
            description: string | null;
            parentId: string | null;
            priority: import("@prisma/client").$Enums.DevItemPriority;
            content: import("@prisma/client/runtime/library").JsonValue | null;
            severity: import("@prisma/client").$Enums.DevItemSeverity | null;
            completedAt: Date | null;
            reviewedAt: Date | null;
            itemType: import("@prisma/client").$Enums.DevItemType;
            moduleKey: string | null;
            ownerId: string;
            reporterId: string;
            reviewerId: string | null;
            startAt: Date | null;
            devEtaAt: Date | null;
            testEtaAt: Date | null;
            etaAt: Date | null;
            devCompletedAt: Date | null;
            testCompletedAt: Date | null;
            labels: import("@prisma/client/runtime/library").JsonValue | null;
        }[];
        pagination: {
            page: any;
            pageSize: any;
            total: number;
            totalPages: number;
        };
    }>;
    findById(id: string): Promise<{
        title: string;
        code: string;
        id: string;
        createdAt: Date;
        status: import("@prisma/client").$Enums.DevItemStatus;
        updatedAt: Date;
        deletedAt: Date | null;
        description: string | null;
        parentId: string | null;
        priority: import("@prisma/client").$Enums.DevItemPriority;
        content: import("@prisma/client/runtime/library").JsonValue | null;
        severity: import("@prisma/client").$Enums.DevItemSeverity | null;
        completedAt: Date | null;
        reviewedAt: Date | null;
        itemType: import("@prisma/client").$Enums.DevItemType;
        moduleKey: string | null;
        ownerId: string;
        reporterId: string;
        reviewerId: string | null;
        startAt: Date | null;
        devEtaAt: Date | null;
        testEtaAt: Date | null;
        etaAt: Date | null;
        devCompletedAt: Date | null;
        testCompletedAt: Date | null;
        labels: import("@prisma/client/runtime/library").JsonValue | null;
    }>;
    create(payload: {
        title: string;
        description?: string;
        itemType: DevItemType;
        priority: any;
        severity?: DevItemSeverity;
        moduleKey?: string;
        parentId?: string;
        ownerId: string;
        devEtaAt?: string;
        testEtaAt?: string;
        etaAt?: string;
        content?: Record<string, unknown>;
        labels?: string[];
        reporterId: string;
    }): Promise<{
        title: string;
        code: string;
        id: string;
        createdAt: Date;
        status: import("@prisma/client").$Enums.DevItemStatus;
        updatedAt: Date;
        deletedAt: Date | null;
        description: string | null;
        parentId: string | null;
        priority: import("@prisma/client").$Enums.DevItemPriority;
        content: import("@prisma/client/runtime/library").JsonValue | null;
        severity: import("@prisma/client").$Enums.DevItemSeverity | null;
        completedAt: Date | null;
        reviewedAt: Date | null;
        itemType: import("@prisma/client").$Enums.DevItemType;
        moduleKey: string | null;
        ownerId: string;
        reporterId: string;
        reviewerId: string | null;
        startAt: Date | null;
        devEtaAt: Date | null;
        testEtaAt: Date | null;
        etaAt: Date | null;
        devCompletedAt: Date | null;
        testCompletedAt: Date | null;
        labels: import("@prisma/client/runtime/library").JsonValue | null;
    }>;
    update(id: string, payload: any, currentUser: CurrentUserInfo): Promise<{
        title: string;
        code: string;
        id: string;
        createdAt: Date;
        status: import("@prisma/client").$Enums.DevItemStatus;
        updatedAt: Date;
        deletedAt: Date | null;
        description: string | null;
        parentId: string | null;
        priority: import("@prisma/client").$Enums.DevItemPriority;
        content: import("@prisma/client/runtime/library").JsonValue | null;
        severity: import("@prisma/client").$Enums.DevItemSeverity | null;
        completedAt: Date | null;
        reviewedAt: Date | null;
        itemType: import("@prisma/client").$Enums.DevItemType;
        moduleKey: string | null;
        ownerId: string;
        reporterId: string;
        reviewerId: string | null;
        startAt: Date | null;
        devEtaAt: Date | null;
        testEtaAt: Date | null;
        etaAt: Date | null;
        devCompletedAt: Date | null;
        testCompletedAt: Date | null;
        labels: import("@prisma/client/runtime/library").JsonValue | null;
    }>;
    updateStatus(id: string, status: DevItemStatus, currentUser: CurrentUserInfo): Promise<{
        title: string;
        code: string;
        id: string;
        createdAt: Date;
        status: import("@prisma/client").$Enums.DevItemStatus;
        updatedAt: Date;
        deletedAt: Date | null;
        description: string | null;
        parentId: string | null;
        priority: import("@prisma/client").$Enums.DevItemPriority;
        content: import("@prisma/client/runtime/library").JsonValue | null;
        severity: import("@prisma/client").$Enums.DevItemSeverity | null;
        completedAt: Date | null;
        reviewedAt: Date | null;
        itemType: import("@prisma/client").$Enums.DevItemType;
        moduleKey: string | null;
        ownerId: string;
        reporterId: string;
        reviewerId: string | null;
        startAt: Date | null;
        devEtaAt: Date | null;
        testEtaAt: Date | null;
        etaAt: Date | null;
        devCompletedAt: Date | null;
        testCompletedAt: Date | null;
        labels: import("@prisma/client/runtime/library").JsonValue | null;
    }>;
    remove(id: string, currentUser: CurrentUserInfo): Promise<{
        title: string;
        code: string;
        id: string;
        createdAt: Date;
        status: import("@prisma/client").$Enums.DevItemStatus;
        updatedAt: Date;
        deletedAt: Date | null;
        description: string | null;
        parentId: string | null;
        priority: import("@prisma/client").$Enums.DevItemPriority;
        content: import("@prisma/client/runtime/library").JsonValue | null;
        severity: import("@prisma/client").$Enums.DevItemSeverity | null;
        completedAt: Date | null;
        reviewedAt: Date | null;
        itemType: import("@prisma/client").$Enums.DevItemType;
        moduleKey: string | null;
        ownerId: string;
        reporterId: string;
        reviewerId: string | null;
        startAt: Date | null;
        devEtaAt: Date | null;
        testEtaAt: Date | null;
        etaAt: Date | null;
        devCompletedAt: Date | null;
        testCompletedAt: Date | null;
        labels: import("@prisma/client/runtime/library").JsonValue | null;
    }>;
    private canTransitionStatus;
}
