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

export const ELearningTypes = t.enumtype({
  "Module": "module",
  "Question": "question",
  "Exam": "exam",
});

export const ExamAction = t.enumtype({
  "Start": "start",
  "Submit": "submit",
  "Result": "result",
  "Other": "other",
});

export const ExamProperties = t.union(t.iface([], {
  "id": "string",
  "action": t.lit("submit"),
  "duration": "number",
  "meta": t.opt("any"),
}), t.iface([], {
  "id": "string",
  "action": t.lit("result"),
  "score": "number",
  "is_passed": "boolean",
  "meta": t.opt("any"),
}), t.iface([], {
  "id": "string",
  "action": t.lit("start"),
  "meta": t.opt("any"),
}));

export const ModuleAction = t.enumtype({
  "View": "view",
  "Other": "other",
});

export const ModuleProperties = t.iface([], {
  "id": "string",
  "progress": "number",
  "action": "ModuleAction",
  "meta": t.opt("any"),
});

export const QuestionAction = t.enumtype({
  "Answer": "answer",
  "Skip": "skip",
  "Other": "other",
});

export const QuestionProperties = t.iface([], {
  "id": "string",
  "exam_id": "string",
  "action": "QuestionAction",
  "answer_id": "string",
  "meta": t.opt("any"),
});

const exportedTypeSuite: t.ITypeSuite = {
  ELearningTypes,
  ExamAction,
  ExamProperties,
  ModuleAction,
  ModuleProperties,
  QuestionAction,
  QuestionProperties,
};
export default exportedTypeSuite;
