import type { PaginatedResult } from '../../types/pagination';
export interface DashboardOverviewDto {
    totalTickets: number;
    newTickets: number;
    openTickets: number;
    resolvedTickets: number;
    slaCompliancePercentage: number;
    averageSatisfaction: number;
}
export interface StatusCountDto {
    status: string;
    count: number;
}
export interface PriorityCountDto {
    priority: string;
    count: number;
}
export interface TypeCountDto {
    type: string;
    count: number;
}
export interface AgentWorkloadDto {
    userId: string;
    name: string;
    email: string;
    totalAssigned: number;
    openCount: number;
    inProgressCount: number;
    onHoldCount: number;
}
export interface TrendDataDto {
    date: string;
    created: number;
    resolved: number;
}
export interface SatisfactionStatsDto {
    totalResponses: number;
    averageRating: number;
    npsScore: number;
    ratingDistribution: Record<number, number>;
}
export interface SlaComplianceDto {
    totalTickets: number;
    ticketsWithinSla: number;
    ticketsBreached: number;
    compliancePercentage: number;
    averageResponseMinutes: number;
    averageResolutionMinutes: number;
}
export interface SlaConfigurationDto {
    id: string;
    priority: string;
    responseTimeMinutes: number;
    resolutionTimeMinutes: number;
    isActive: boolean;
    responseTimeFormatted: string;
    resolutionTimeFormatted: string;
}
export interface UpdateSlaConfigurationRequest {
    responseTimeMinutes: number;
    resolutionTimeMinutes: number;
}
export interface EscalationRuleDto {
    id: string;
    level: string;
    triggerType: string;
    notifyRoleId: string | null;
    delayAfterBreachMinutes: number;
    isActive: boolean;
    isSystemDefault: boolean;
}
export interface TicketSlaDto {
    id: string;
    ticketId: string;
    ticketNumber: string;
    ticketTitle: string;
    responseDueAt: string;
    resolutionDueAt: string;
    responseBreached: boolean;
    resolutionBreached: boolean;
    responseBreachedAt: string | null;
    resolutionBreachedAt: string | null;
    firstResponseAt: string | null;
    escalationLevel: string;
    isPaused: boolean;
    responseSlaPercentage: number;
    resolutionSlaPercentage: number;
}
export interface SlaMetricsDto {
    totalTickets: number;
    ticketsWithinSla: number;
    ticketsBreached: number;
    slaCompliancePercentage: number;
    averageResponseTimeMinutes: number;
    averageResolutionTimeMinutes: number;
    breachesByPriority: Record<string, number>;
    ticketsByEscalationLevel: Record<string, number>;
}
export interface NotificationDto {
    id: string;
    type: string;
    title: string;
    message: string;
    relatedEntityType: string | null;
    relatedEntityId: string | null;
    actionUrl: string | null;
    isRead: boolean;
    readAt: string | null;
    createdAt: string;
    tenantId: string | null;
    tenantName: string | null;
    tenantSlug: string | null;
}
export interface NotificationPreferenceDto {
    notificationType: string;
    emailEnabled: boolean;
    inAppEnabled: boolean;
    pushEnabled: boolean;
}
export interface UpdatePreferencesRequest {
    notificationType: string;
    emailEnabled: boolean;
    inAppEnabled: boolean;
    pushEnabled?: boolean;
}
export interface ResponseTemplateDto {
    id: string;
    title: string;
    content: string;
    category: string;
    language: string;
    isActive: boolean;
    displayOrder: number;
    createdAt: string;
    updatedAt: string | null;
}
export interface CreateTemplateRequest {
    title: string;
    content: string;
    category: string;
}
export interface UpdateTemplateRequest {
    title: string;
    content: string;
    category?: string;
    displayOrder?: number;
}
export interface RenderTemplateRequest {
    variables: Record<string, string>;
}
export interface RenderedTemplateDto {
    content: string;
}
export interface TicketActivityDto {
    id: string;
    ticketId: string;
    action: string;
    fieldChanged: string | null;
    oldValue: string | null;
    newValue: string | null;
    changedByUserId: string | null;
    changedByUserName: string | null;
    createdAt: string;
}
export interface TicketSatisfactionDto {
    id: string;
    ticketId: string;
    rating: number;
    comment: string | null;
    submittedByUserId: string;
    submittedAt: string;
}
export interface SubmitSatisfactionRequest {
    rating: number;
    comment?: string;
}
export declare const dashboardApi: {
    getOverview: (days?: number) => Promise<DashboardOverviewDto>;
    getByStatus: () => Promise<StatusCountDto[]>;
    getByPriority: () => Promise<PriorityCountDto[]>;
    getByType: (days?: number) => Promise<TypeCountDto[]>;
    getAgentWorkload: () => Promise<AgentWorkloadDto[]>;
    getTrends: (days?: number) => Promise<TrendDataDto[]>;
    getSatisfactionStats: (days?: number) => Promise<SatisfactionStatsDto>;
    getSlaCompliance: (days?: number) => Promise<SlaComplianceDto>;
};
export declare const slaApi: {
    getConfigurations: () => Promise<SlaConfigurationDto[]>;
    updateConfiguration: (priority: string, data: UpdateSlaConfigurationRequest) => Promise<SlaConfigurationDto>;
    getEscalationRules: () => Promise<EscalationRuleDto[]>;
    getBreachedTickets: (responseBreached?: boolean, resolutionBreached?: boolean) => Promise<TicketSlaDto[]>;
    getTicketsApproachingBreach: (warningMinutes?: number) => Promise<TicketSlaDto[]>;
    getMetrics: (fromDate?: string, toDate?: string) => Promise<SlaMetricsDto>;
    escalateTicket: (ticketId: string, level: string, reason?: string) => Promise<unknown>;
};
export declare const notificationsApi: {
    getAll: (page?: number, pageSize?: number, isRead?: boolean, tenantId?: string) => Promise<PaginatedResult<NotificationDto>>;
    getUnread: (limit?: number) => Promise<NotificationDto[]>;
    getUnreadCount: () => Promise<{
        count: number;
    }>;
    markAsRead: (id: string) => Promise<unknown>;
    markAllAsRead: () => Promise<unknown>;
    delete: (id: string) => Promise<unknown>;
    deleteAll: () => Promise<unknown>;
    getPreferences: () => Promise<NotificationPreferenceDto[]>;
    updatePreferences: (data: UpdatePreferencesRequest) => Promise<unknown>;
};
export declare const templatesApi: {
    getAll: (category?: string, activeOnly?: boolean, language?: string) => Promise<ResponseTemplateDto[]>;
    getById: (id: string) => Promise<ResponseTemplateDto>;
    getCategories: () => Promise<string[]>;
    getByCategory: (category: string) => Promise<ResponseTemplateDto[]>;
    create: (data: CreateTemplateRequest) => Promise<ResponseTemplateDto>;
    update: (id: string, data: UpdateTemplateRequest) => Promise<ResponseTemplateDto>;
    activate: (id: string) => Promise<unknown>;
    deactivate: (id: string) => Promise<unknown>;
    delete: (id: string) => Promise<unknown>;
    render: (id: string, variables: Record<string, string>) => Promise<RenderedTemplateDto>;
};
//# sourceMappingURL=supportApi.d.ts.map