import { CollectionDocument } from './collection-document.model';
export interface SupportTicketModel extends CollectionDocument {
    type: SupportTicketType;
    priority: SupportTicketPriority;
    issue: string;
    ai_recommendations?: SupportTicketAiRecommendationsModel;
    support_ticket_number: number;
    support_ticket_number_string: string;
    status: SupportTicketStatus;
    substatus: SupportTicketSubstatus;
    client: string;
    id_client: string;
    url_ticket?: string;
    messages: SupportTicketMessageModel[];
    date_created: Date;
    date_created_string: string;
    id_user_created: string;
    user_created: string;
    billable: boolean;
    date_investigation?: Date;
    date_closed?: Date;
    files: string[];
    current_watchers: SupportTicketWatchersModel[];
    client_user: SupportTicketClientUserModel;
    users_assigned: SupportTicketUserAssignedModel[];
    estimated_billable_hours?: number;
    billable_hours?: number;
    bill_description: string;
    tasks: SupportTicketTaskModel[];
    notes: SupportTicketNoteModel[];
    difficulty: number;
}
export interface SupportTicketAiRecommendationsModel {
    source?: string;
    hidden_from_client?: boolean;
    created_at?: Date;
    source_message_id?: string;
    summary?: string;
    internal_recommendations?: string;
    code_change_recommendations?: string;
}
export interface SupportTicketClientUserModel {
    id_user: string;
    user: string;
    email: string;
}
export type SupportTicketPriority = 'High' | 'Low';
export type SupportTicketSubstatus = 'New' | 'Work In Progress' | 'Idle' | 'Awaiting Customer Interaction' | 'Awaiting Customer Response' | 'Awaiting Validation' | 'Awaiting Internal Review';
export type SupportTicketType = 'System Impairment' | 'Request New Feature' | 'General Inquery';
export type SupportTicketStatus = 'Active' | 'Review' | 'Closed' | 'Opened' | 'Resolved';
export interface SupportTicketMessageModel {
    message: string;
    id_user: string;
    user: string;
    date: Date;
    type: SupportTicketMessageType;
    internal?: boolean;
    visibility?: 'public' | 'internal';
    badge?: string;
    source?: string;
}
type SupportTicketMessageType = 'ResolveIO' | 'Client';
export interface SupportTicketWatchersModel {
    user: string;
    id_user: string;
    email: string;
}
export interface SupportTicketTaskModel {
    description: string;
    completed: boolean;
    id_user?: string;
    user?: string;
    date_created: Date;
    date_completed?: Date;
}
export interface SupportTicketNoteModel {
    description: string;
    id_user: string;
    user: string;
    date_created: Date;
}
export interface SupportTicketUserAssignedModel {
    id_user: string;
    user: string;
    date_created: Date;
}
export {};
