import { CategoryService, GroupService, StatsService } from './services';
import { CreateCategoryDto, UpdateCategoryDto, QueryCategoryDto, CreateGroupDto, UpdateGroupDto, QueryGroupDto, UpdateGroupMembersDto } from './dto';
export declare class TicketAdminController {
    private readonly categoryService;
    private readonly groupService;
    private readonly statsService;
    constructor(categoryService: CategoryService, groupService: GroupService, statsService: StatsService);
    createCategory(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[];
    }>;
    getCategories(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[];
    })[]>;
    getCategoryTree(isActiveOnly: string): Promise<any[]>;
    getCategory(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[];
    }>;
    updateCategory(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[];
    }>;
    deleteCategory(id: string): Promise<{
        success: boolean;
    }>;
    createGroup(createGroupDto: CreateGroupDto): Promise<{
        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;
    }>;
    getGroups(query: QueryGroupDto): Promise<{
        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;
    }[]>;
    getGroup(id: string): Promise<{
        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;
    }>;
    getGroupMembers(id: string): Promise<{
        groupId: string;
        memberIds: string[];
        members: never[];
    }>;
    updateGroup(id: string, updateGroupDto: UpdateGroupDto): Promise<{
        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;
    }>;
    addGroupMembers(id: string, dto: UpdateGroupMembersDto): Promise<{
        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;
    }>;
    removeGroupMembers(id: string, dto: UpdateGroupMembersDto): Promise<{
        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;
    }>;
    deleteGroup(id: string): Promise<{
        success: boolean;
    }>;
    getStatsOverview(startDate?: string, endDate?: string, region?: string, tenantId?: string): Promise<import("./services").StatsOverview>;
    getStatusDistribution(region?: string, tenantId?: string): Promise<import("./services").StatusDistribution[]>;
    getCategoryDistribution(region?: string, tenantId?: string): Promise<import("./services").CategoryDistribution[]>;
    getTrends(days?: string, region?: string, tenantId?: string): Promise<import("./services").TrendData[]>;
    getAssigneeWorkload(assigneeIds?: string, region?: string, tenantId?: string): Promise<{
        assigneeId: string | null;
        activeTickets: number;
    }[]>;
}
