import { PrismaService } from "../../../core/database/prisma/prisma.service";
import { CreateCategoryDto, UpdateCategoryDto, QueryCategoryDto } from '../dto';
export declare class CategoryService {
    private readonly prisma;
    private readonly logger;
    constructor(prisma: PrismaService);
    create(createCategoryDto: CreateCategoryDto): Promise<{
        parent: {
            code: string;
            id: string;
            createdAt: Date;
            name: string;
            sortOrder: number;
            updatedAt: Date;
            description: string | null;
            parentId: string | null;
            isActive: boolean;
            icon: string | null;
            defaultPriority: import("@prisma/client").$Enums.TicketPriority;
            defaultAssigneeGroupId: string | null;
            slaId: string | null;
            formTemplateId: string | null;
            allowedDepartmentIds: string[];
            allowedRoleIds: string[];
        } | null;
        defaultAssigneeGroup: {
            code: string;
            id: string;
            createdAt: Date;
            name: string;
            updatedAt: Date;
            description: string | null;
            managerId: string | null;
            isActive: boolean;
            memberIds: string[];
            skills: string[];
            assignmentStrategy: import("@prisma/client").$Enums.AssignmentStrategy;
        } | null;
        sla: {
            id: string;
            createdAt: Date;
            name: string;
            updatedAt: Date;
            description: string | null;
            isActive: boolean;
            isDefault: boolean;
            firstResponseTime: import("@prisma/client/runtime/library").JsonValue;
            resolutionTime: import("@prisma/client/runtime/library").JsonValue;
            businessHours: import("@prisma/client/runtime/library").JsonValue;
            excludeHolidays: boolean;
            holidayCalendarId: string | null;
            escalationRules: import("@prisma/client/runtime/library").JsonValue | null;
        } | null;
    } & {
        code: string;
        id: string;
        createdAt: Date;
        name: string;
        sortOrder: number;
        updatedAt: Date;
        description: string | null;
        parentId: string | null;
        isActive: boolean;
        icon: string | null;
        defaultPriority: import("@prisma/client").$Enums.TicketPriority;
        defaultAssigneeGroupId: string | null;
        slaId: string | null;
        formTemplateId: string | null;
        allowedDepartmentIds: string[];
        allowedRoleIds: string[];
    }>;
    findAll(query: QueryCategoryDto): Promise<({
        children: {
            code: string;
            id: string;
            createdAt: Date;
            name: string;
            sortOrder: number;
            updatedAt: Date;
            description: string | null;
            parentId: string | null;
            isActive: boolean;
            icon: string | null;
            defaultPriority: import("@prisma/client").$Enums.TicketPriority;
            defaultAssigneeGroupId: string | null;
            slaId: string | null;
            formTemplateId: string | null;
            allowedDepartmentIds: string[];
            allowedRoleIds: string[];
        }[];
        _count: {
            tickets: number;
        };
        defaultAssigneeGroup: {
            code: string;
            id: string;
            name: string;
        } | null;
        sla: {
            id: string;
            name: string;
        } | null;
    } & {
        code: string;
        id: string;
        createdAt: Date;
        name: string;
        sortOrder: number;
        updatedAt: Date;
        description: string | null;
        parentId: string | null;
        isActive: boolean;
        icon: string | null;
        defaultPriority: import("@prisma/client").$Enums.TicketPriority;
        defaultAssigneeGroupId: string | null;
        slaId: string | null;
        formTemplateId: string | null;
        allowedDepartmentIds: string[];
        allowedRoleIds: string[];
    })[]>;
    findOne(id: string): Promise<{
        children: {
            code: string;
            id: string;
            createdAt: Date;
            name: string;
            sortOrder: number;
            updatedAt: Date;
            description: string | null;
            parentId: string | null;
            isActive: boolean;
            icon: string | null;
            defaultPriority: import("@prisma/client").$Enums.TicketPriority;
            defaultAssigneeGroupId: string | null;
            slaId: string | null;
            formTemplateId: string | null;
            allowedDepartmentIds: string[];
            allowedRoleIds: string[];
        }[];
        _count: {
            tickets: number;
        };
        parent: {
            code: string;
            id: string;
            createdAt: Date;
            name: string;
            sortOrder: number;
            updatedAt: Date;
            description: string | null;
            parentId: string | null;
            isActive: boolean;
            icon: string | null;
            defaultPriority: import("@prisma/client").$Enums.TicketPriority;
            defaultAssigneeGroupId: string | null;
            slaId: string | null;
            formTemplateId: string | null;
            allowedDepartmentIds: string[];
            allowedRoleIds: string[];
        } | null;
        defaultAssigneeGroup: {
            code: string;
            id: string;
            createdAt: Date;
            name: string;
            updatedAt: Date;
            description: string | null;
            managerId: string | null;
            isActive: boolean;
            memberIds: string[];
            skills: string[];
            assignmentStrategy: import("@prisma/client").$Enums.AssignmentStrategy;
        } | null;
        sla: {
            id: string;
            createdAt: Date;
            name: string;
            updatedAt: Date;
            description: string | null;
            isActive: boolean;
            isDefault: boolean;
            firstResponseTime: import("@prisma/client/runtime/library").JsonValue;
            resolutionTime: import("@prisma/client/runtime/library").JsonValue;
            businessHours: import("@prisma/client/runtime/library").JsonValue;
            excludeHolidays: boolean;
            holidayCalendarId: string | null;
            escalationRules: import("@prisma/client/runtime/library").JsonValue | null;
        } | null;
    } & {
        code: string;
        id: string;
        createdAt: Date;
        name: string;
        sortOrder: number;
        updatedAt: Date;
        description: string | null;
        parentId: string | null;
        isActive: boolean;
        icon: string | null;
        defaultPriority: import("@prisma/client").$Enums.TicketPriority;
        defaultAssigneeGroupId: string | null;
        slaId: string | null;
        formTemplateId: string | null;
        allowedDepartmentIds: string[];
        allowedRoleIds: string[];
    }>;
    findByCode(code: string): Promise<({
        defaultAssigneeGroup: {
            code: string;
            id: string;
            createdAt: Date;
            name: string;
            updatedAt: Date;
            description: string | null;
            managerId: string | null;
            isActive: boolean;
            memberIds: string[];
            skills: string[];
            assignmentStrategy: import("@prisma/client").$Enums.AssignmentStrategy;
        } | null;
        sla: {
            id: string;
            createdAt: Date;
            name: string;
            updatedAt: Date;
            description: string | null;
            isActive: boolean;
            isDefault: boolean;
            firstResponseTime: import("@prisma/client/runtime/library").JsonValue;
            resolutionTime: import("@prisma/client/runtime/library").JsonValue;
            businessHours: import("@prisma/client/runtime/library").JsonValue;
            excludeHolidays: boolean;
            holidayCalendarId: string | null;
            escalationRules: import("@prisma/client/runtime/library").JsonValue | null;
        } | null;
    } & {
        code: string;
        id: string;
        createdAt: Date;
        name: string;
        sortOrder: number;
        updatedAt: Date;
        description: string | null;
        parentId: string | null;
        isActive: boolean;
        icon: string | null;
        defaultPriority: import("@prisma/client").$Enums.TicketPriority;
        defaultAssigneeGroupId: string | null;
        slaId: string | null;
        formTemplateId: string | null;
        allowedDepartmentIds: string[];
        allowedRoleIds: string[];
    }) | null>;
    update(id: string, updateCategoryDto: UpdateCategoryDto): Promise<{
        parent: {
            code: string;
            id: string;
            createdAt: Date;
            name: string;
            sortOrder: number;
            updatedAt: Date;
            description: string | null;
            parentId: string | null;
            isActive: boolean;
            icon: string | null;
            defaultPriority: import("@prisma/client").$Enums.TicketPriority;
            defaultAssigneeGroupId: string | null;
            slaId: string | null;
            formTemplateId: string | null;
            allowedDepartmentIds: string[];
            allowedRoleIds: string[];
        } | null;
        defaultAssigneeGroup: {
            code: string;
            id: string;
            createdAt: Date;
            name: string;
            updatedAt: Date;
            description: string | null;
            managerId: string | null;
            isActive: boolean;
            memberIds: string[];
            skills: string[];
            assignmentStrategy: import("@prisma/client").$Enums.AssignmentStrategy;
        } | null;
        sla: {
            id: string;
            createdAt: Date;
            name: string;
            updatedAt: Date;
            description: string | null;
            isActive: boolean;
            isDefault: boolean;
            firstResponseTime: import("@prisma/client/runtime/library").JsonValue;
            resolutionTime: import("@prisma/client/runtime/library").JsonValue;
            businessHours: import("@prisma/client/runtime/library").JsonValue;
            excludeHolidays: boolean;
            holidayCalendarId: string | null;
            escalationRules: import("@prisma/client/runtime/library").JsonValue | null;
        } | null;
    } & {
        code: string;
        id: string;
        createdAt: Date;
        name: string;
        sortOrder: number;
        updatedAt: Date;
        description: string | null;
        parentId: string | null;
        isActive: boolean;
        icon: string | null;
        defaultPriority: import("@prisma/client").$Enums.TicketPriority;
        defaultAssigneeGroupId: string | null;
        slaId: string | null;
        formTemplateId: string | null;
        allowedDepartmentIds: string[];
        allowedRoleIds: string[];
    }>;
    remove(id: string): Promise<{
        success: boolean;
    }>;
    getCategoryTree(isActiveOnly?: boolean): Promise<any[]>;
}
