/**
 * This module was automatically generated by `ts-interface-builder`
 */
import * as t from "ts-interface-checker";
// tslint:disable:object-literal-key-quotes

export const CallCenterEventType = t.enumtype({
  "Break": "break",
  "Contact": "contact",
  "OpsScorecard": "ops_scorecard",
});

export const CallCenterAction = t.enumtype({
  "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 const BreakType = t.enumtype({
  "BioBreak": "bio_break",
  "Feedback": "feedback",
  "Meeting": "meeting",
  "Meal": "meal",
  "Tea": "tea",
  "Other": "other",
});

export const ContactChannel = t.enumtype({
  "Call": "call",
  "WhatsApp": "whatsapp",
  "SMS": "sms",
  "Email": "email",
  "Other": "other",
});

export const ContactType = t.enumtype({
  "Emergency": "emergency",
  "Grievance": "grievance",
  "NonEmergency": "non_emergency",
  "Transfer": "transfer",
  "FollowUp": "follow_up",
  "ServiceOffering": "service_offering",
  "CustomerSupport": "customer_support",
  "Other": "other",
});

export const BreakProperties = t.iface([], {
  "type": "BreakType",
  "sub_type": t.opt("string"),
  "action": "CallCenterAction",
  "total_time": "number",
  "consumed_time": "number",
  "meta": t.opt("any"),
});

export const ContactProperties = t.iface([], {
  "action": "CallCenterAction",
  "details": "ContactDetailObject",
  "transfer": t.opt("TransferObject"),
  "meta": t.opt("any"),
});

export const ContactDetailObject = t.iface([], {
  "id": "string",
  "channel": "ContactChannel",
  "type": "ContactType",
  "start_time": t.opt("string"),
  "sub_type": t.opt("string"),
  "is_valid": t.opt("boolean"),
  "is_transfer": t.opt("boolean"),
  "incident_id": t.opt("string"),
  "customer_id": t.opt("string"),
  "customer_type": t.opt("string"),
  "phone_id": t.opt("string"),
  "extension": t.opt("string"),
  "duration": t.opt("number"),
  "resolution": t.opt("string"),
  "summary": t.opt("string"),
  "remarks": t.opt("string"),
  "is_priority": t.opt("boolean"),
});

export const TransferObject = t.iface([], {
  "id": "string",
  "destination": t.opt("string"),
  "summary": t.opt("string"),
  "remarks": t.opt("string"),
});

export const OpsScorecardProperties = t.iface([], {
  "quality_traits": "QualityTraitsObject",
  "meta": t.opt("any"),
});

export const QualityTraitsObject = t.iface([], {
  "audit_count": "number",
  "quality_score": t.opt("number"),
  "fatal_calls": t.opt("number"),
  "fatal_score": t.opt("number"),
  "performance_group": "string",
  "remarks": t.opt("string"),
});

const exportedTypeSuite: t.ITypeSuite = {
  CallCenterEventType,
  CallCenterAction,
  BreakType,
  ContactChannel,
  ContactType,
  BreakProperties,
  ContactProperties,
  ContactDetailObject,
  TransferObject,
  OpsScorecardProperties,
  QualityTraitsObject,
};
export default exportedTypeSuite;
