export enum CallCenterEventType {
    Break = "break",
    Contact = "contact",
    OpsScorecard = "ops_scorecard",
}

export enum CallCenterAction {
    View = "view",
    Add = "add",
    Update = "update",
    Remove = "remove",
    Start = "start",
    End = "end",
    Pause = "pause",
    Resume = "resume",

    Attend = "attend",
    Decline = "decline",
    Terminate = "terminate",
    Transfer = "transfer",
    Skip = "skip",

    Other = "other"

}

export enum BreakType {
    BioBreak = "bio_break",
    Feedback = "feedback",
    Meeting = "meeting",
    Meal = "meal",
    Tea = "tea",
    Other = "other",
}

export enum ContactChannel {
    Call = "call",
    WhatsApp = "whatsapp",
    SMS = "sms",
    Email = "email",
    Other = "other",
}

export enum ContactType {
    Emergency = "emergency",
    Grievance = "grievance",
    NonEmergency = "non_emergency",
    Transfer = "transfer",
    FollowUp = "follow_up",
    ServiceOffering = "service_offering",
    CustomerSupport = "customer_support",
    Other = "other",
}

export interface BreakProperties {
    type: BreakType,
    sub_type?: string,
    action: CallCenterAction,
    total_time: number,
    consumed_time: number
    meta?: any
}

export interface ContactProperties {
    action: CallCenterAction,
    details: ContactDetailObject,
    transfer?: TransferObject,
    meta?: any
}

export interface ContactDetailObject {
    id: string,
    channel: ContactChannel,
    type: ContactType,
    start_time?: string,
    sub_type?: string,
    is_valid?: boolean,
    is_transfer?: boolean,
    incident_id?: string,
    customer_id?: string,
    customer_type?: string,
    phone_id?: string,
    extension?: string,
    duration?: number,
    resolution?: string,
    summary?: string,
    remarks?: string,
    is_priority?: boolean
}

export interface TransferObject {
    id: string,
    destination?: string,
    summary?: string,
    remarks?: string,
}

export interface OpsScorecardProperties {
    quality_traits: QualityTraitsObject,
    meta?: any
}

export interface QualityTraitsObject {
    audit_count: number,
    quality_score?: number,
    fatal_calls?: number,
    fatal_score?: number,
    performance_group: string,
    remarks?: string,
}
