types:
  UserId: string
  ProblemId: string
  NodeId: string
  VariableType:
    union:
      integerType: {}
      doubleType: {}
      booleanType: {}
      stringType: {}
      charType: {}
      listType: ListType
      mapType: MapType
      binaryTreeType: {}
      singlyLinkedListType: {}
      doublyLinkedListType: {}
  ListType:
    properties:
      valueType: VariableType
      isFixedLength:
        docs: Whether this list is fixed-size (for languages that supports fixed-size
          lists). Defaults to false.
        type: optional<boolean>
  MapType:
    properties:
      keyType: VariableType
      valueType: VariableType
  VariableValue:
    union:
      integerValue: integer
      booleanValue: boolean
      doubleValue: double
      stringValue: string
      charValue: string
      mapValue: MapValue
      listValue: list<VariableValue>
      binaryTreeValue: BinaryTreeValue
      singlyLinkedListValue: SinglyLinkedListValue
      doublyLinkedListValue: DoublyLinkedListValue
      nullValue: {}
  DebugVariableValue:
    union:
      integerValue: integer
      booleanValue: boolean
      doubleValue: double
      stringValue: string
      charValue: string
      mapValue: DebugMapValue
      listValue: list<DebugVariableValue>
      binaryTreeNodeValue: BinaryTreeNodeAndTreeValue
      singlyLinkedListNodeValue: SinglyLinkedListNodeAndListValue
      doublyLinkedListNodeValue: DoublyLinkedListNodeAndListValue
      undefinedValue: {}
      nullValue: {}
      genericValue: GenericValue
  GenericValue:
    properties:
      stringifiedType: optional<string>
      stringifiedValue: string
  MapValue:
    properties:
      keyValuePairs: list<KeyValuePair>
  KeyValuePair:
    properties:
      key: VariableValue
      value: VariableValue
  BinaryTreeValue:
    properties:
      root: optional<NodeId>
      nodes: map<NodeId, BinaryTreeNodeValue>
  BinaryTreeNodeValue:
    properties:
      nodeId: NodeId
      val: double
      right: optional<NodeId>
      left: optional<NodeId>
  BinaryTreeNodeAndTreeValue:
    properties:
      nodeId: NodeId
      fullTree: BinaryTreeValue
  SinglyLinkedListValue:
    properties:
      head: optional<NodeId>
      nodes: map<NodeId, SinglyLinkedListNodeValue>
  SinglyLinkedListNodeValue:
    properties:
      nodeId: NodeId
      val: double
      next: optional<NodeId>
  SinglyLinkedListNodeAndListValue:
    properties:
      nodeId: NodeId
      fullList: SinglyLinkedListValue
  DoublyLinkedListValue:
    properties:
      head: optional<NodeId>
      nodes: map<NodeId, DoublyLinkedListNodeValue>
  DoublyLinkedListNodeValue:
    properties:
      nodeId: NodeId
      val: double
      next: optional<NodeId>
      prev: optional<NodeId>
  DoublyLinkedListNodeAndListValue:
    properties:
      nodeId: NodeId
      fullList: DoublyLinkedListValue
  DebugMapValue:
    properties:
      keyValuePairs: list<DebugKeyValuePairs>
  DebugKeyValuePairs:
    properties:
      key: DebugVariableValue
      value: DebugVariableValue
  TestCase:
    properties:
      id: string
      params: list<VariableValue>
  TestCaseWithExpectedResult:
    properties:
      testCase: TestCase
      expectedResult: VariableValue
  FileInfo:
    properties:
      filename: string
      contents: string
  Language:
    enum:
      - JAVA
      - JAVASCRIPT
      - PYTHON
