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

export const EmergencyMgmtEventType = t.enumtype({
  "Incident": "incident",
  "Ambulance": "ambulance",
});

export const EmergencyMgmtCatalogType = t.enumtype({
  "ERO": "user_ero",
  "Ambulance": "ambulance",
});

export const EmergencyMgmtItemAction = 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",
  "Dispatch": "dispatch",
  "Denial": "denial",
  "Other": "other",
});

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

export const AmbulanceStatus = t.enumtype({
  "Available": "available",
  "Busy": "busy",
  "Maintenance": "maintenance",
  "Other": "other",
});

export const IncidentDetailItem = t.iface([], {
  "id": "string",
  "contact_id": t.opt("string"),
  "type": "IncidentType",
  "sub_type": t.opt("string"),
  "category": t.opt(t.array("string")),
  "language": t.opt("Language"),
  "is_duplicate_incident": t.opt("boolean"),
  "is_sms_set_location": t.opt("boolean"),
  "severity": t.opt("string"),
  "chief_complaints_list": t.opt(t.array("ChiefComplaintItem")),
});

export const ChiefComplaintItem = t.iface([], {
  "complaint": "string",
  "questions_list": t.opt(t.array("DiagnosisQuestionItem")),
});

export const EmergencyPatientItem = t.iface([], {
  "id": "string",
  "age": t.opt("number"),
  "blood_group": t.opt("string"),
  "gender": t.opt("string"),
});

export const AmbulanceItem = t.iface([], {
  "id": "string",
  "driver_id": "string",
  "emso_id": t.opt("string"),
  "type": "string",
  "distance_from_incident": t.opt("number"),
  "status": "AmbulanceStatus",
  "eta": t.opt("number"),
  "gps_datetime": t.opt("string"),
  "location": t.opt("AddressObject"),
});

export const IncidentProperties = t.iface([], {
  "action": "EmergencyMgmtItemAction",
  "details": "IncidentDetailItem",
  "patient_list": t.opt(t.array("EmergencyPatientItem")),
  "address": t.opt("AddressObject"),
  "facility_id": t.opt("string"),
  "ambulance_list": t.opt(t.array("AmbulanceItem")),
  "schedule_time": t.opt("number"),
  "status": t.opt("string"),
  "resolution": t.opt("string"),
  "summary": t.opt("string"),
  "remarks": t.opt("string"),
  "meta": t.opt("any"),
});

export const AmbulanceProperties = t.iface([], {
  "incident_id": t.opt("string"),
  "contact_id": t.opt("string"),
  "action": "EmergencyMgmtItemAction",
  "ambulance": "AmbulanceItem",
  "pickup_address": t.opt("AddressObject"),
  "destination_address": t.opt("AddressObject"),
  "denial_details": t.opt("DenialDetailItem"),
  "meta": t.opt("any"),
});

export const DenialDetailItem = t.iface([], {
  "author": t.opt("string"),
  "reason": "string",
  "remarks": t.opt("string"),
});

export const EROCatalog = t.iface([], {
  "id": "string",
  "joining_date": t.opt("string"),
  "status": "string",
  "employee_type": t.opt("string"),
  "zone": t.opt("string"),
  "site_id_list": t.opt(t.array("string")),
  "supervisor_id_list": t.opt(t.array("string")),
});

export const AmbulanceCatalog = t.iface([], {
  "id": "string",
  "type": "string",
  "base_site_id": t.opt("string"),
  "base_site_name": t.opt("string"),
  "base_site_district": t.opt("string"),
});

const exportedTypeSuite: t.ITypeSuite = {
  EmergencyMgmtEventType,
  EmergencyMgmtCatalogType,
  EmergencyMgmtItemAction,
  IncidentType,
  AmbulanceStatus,
  IncidentDetailItem,
  ChiefComplaintItem,
  EmergencyPatientItem,
  AmbulanceItem,
  IncidentProperties,
  AmbulanceProperties,
  DenialDetailItem,
  EROCatalog,
  AmbulanceCatalog,
};
export default exportedTypeSuite;
