export interface AssignmentRuleChainDto {
    fallbackOrder: number;
    fallbackStrategyType: string;
    fallbackGroupId: string | null;
}
export interface AssignmentRuleDto {
    id: string;
    tenantId: string | null;
    name: string;
    priority: number;
    strategyType: string;
    ticketPriorityFilter: string | null;
    ticketTypeFilter: string | null;
    targetGroupId: string | null;
    maxConcurrentTickets: number;
    isActive: boolean;
    isFallback: boolean;
    fallbackChain: AssignmentRuleChainDto[];
    createdAt: string;
    updatedAt: string | null;
}
export interface CreateAssignmentRuleChainRequest {
    fallbackOrder: number;
    fallbackStrategyType: string;
    fallbackGroupId?: string;
}
export interface CreateAssignmentRuleRequest {
    name: string;
    priority: number;
    strategyType: string;
    ticketPriorityFilter?: string;
    ticketTypeFilter?: string;
    targetGroupId?: string;
    maxConcurrentTickets?: number;
    isFallback?: boolean;
    fallbackChain?: CreateAssignmentRuleChainRequest[];
}
export interface UpdateAssignmentRuleRequest {
    name: string;
    priority: number;
    strategyType: string;
    ticketPriorityFilter?: string;
    ticketTypeFilter?: string;
    targetGroupId?: string;
    maxConcurrentTickets?: number;
    isFallback?: boolean;
    fallbackChain?: CreateAssignmentRuleChainRequest[];
}
export interface AgentSkillDto {
    userId: string;
    skillCategory: string;
    proficiencyLevel: number;
    assignedAt: string;
    assignedBy: string | null;
}
export interface AgentSkillItemRequest {
    skillCategory: string;
    proficiencyLevel: number;
}
export interface UpdateAgentSkillsRequest {
    skills: AgentSkillItemRequest[];
}
export interface AgentAvailabilityDto {
    userId: string;
    status: string;
    maxConcurrentTickets: number;
    lastStatusChangeAt: string;
    lastHeartbeatAt: string | null;
}
export interface UpdateAgentAvailabilityRequest {
    status: string;
}
export interface AssignmentLogDto {
    id: string;
    ticketId: string;
    assignedUserId: string | null;
    ruleId: string | null;
    strategyUsed: string;
    reason: string | null;
    success: boolean;
    createdAt: string;
}
export interface AgentWorkloadDto {
    userId: string;
    userName: string | null;
    activeTicketCount: number;
    maxConcurrentTickets: number;
    availabilityStatus: string;
    skills: AgentSkillDto[];
}
export declare const rulesApi: {
    getAll: () => Promise<AssignmentRuleDto[]>;
    getById: (id: string) => Promise<AssignmentRuleDto>;
    create: (data: CreateAssignmentRuleRequest) => Promise<AssignmentRuleDto>;
    update: (id: string, data: UpdateAssignmentRuleRequest) => Promise<AssignmentRuleDto>;
    delete: (id: string) => Promise<unknown>;
    activate: (id: string) => Promise<unknown>;
    deactivate: (id: string) => Promise<unknown>;
};
export declare const skillsApi: {
    getAll: () => Promise<AgentSkillDto[]>;
    getByAgent: (userId: string) => Promise<AgentSkillDto[]>;
    update: (userId: string, data: UpdateAgentSkillsRequest) => Promise<AgentSkillDto[]>;
};
export declare const availabilityApi: {
    getByAgent: (userId: string) => Promise<AgentAvailabilityDto>;
    update: (userId: string, data: UpdateAgentAvailabilityRequest) => Promise<AgentAvailabilityDto>;
};
export declare const logsApi: {
    getByTicket: (ticketId: string, page?: number, pageSize?: number) => Promise<AssignmentLogDto[]>;
};
export declare const workloadApi: {
    getByAgent: (userId: string) => Promise<AgentWorkloadDto>;
    getAll: () => Promise<AgentWorkloadDto[]>;
};
//# sourceMappingURL=assignmentApi.d.ts.map