sig
  val t : string
  type properties = (string * string) list
  type name = string
  type alias = string
  type color = float * float * float
  val define_container_type :
    name:Paje.name ->
    ?typ:string -> ?alias:Paje.alias -> Paje.properties -> Paje.properties
  val define_state_type :
    name:Paje.name ->
    typ:string -> ?alias:Paje.alias -> Paje.properties -> Paje.properties
  val define_event_type :
    name:Paje.name ->
    typ:string -> ?alias:Paje.alias -> Paje.properties -> Paje.properties
  val define_variable_type :
    name:Paje.name ->
    typ:string ->
    color:Paje.color ->
    ?alias:Paje.alias -> Paje.properties -> Paje.properties
  val define_link_type :
    name:Paje.name ->
    typ:string ->
    start_container_type:string ->
    end_container_type:string ->
    ?alias:Paje.alias -> Paje.properties -> Paje.properties
  val define_entity_value :
    name:Paje.name ->
    typ:string ->
    color:Paje.color ->
    ?alias:Paje.alias -> Paje.properties -> Paje.properties
  val create_container :
    name:Paje.name ->
    typ:string ->
    ?container:Paje.name ->
    ?alias:Paje.alias -> Paje.properties -> Paje.properties
  val destroy_container :
    name:Paje.name -> typ:string -> Paje.properties -> Paje.properties
  val set_state :
    typ:string ->
    container:Paje.name -> value:string -> Paje.properties -> Paje.properties
  val push_state :
    typ:string ->
    container:Paje.name -> value:string -> Paje.properties -> Paje.properties
  val pop_state :
    typ:string -> container:Paje.name -> Paje.properties -> Paje.properties
  val reset_state :
    typ:string -> container:Paje.name -> Paje.properties -> Paje.properties
  val new_event :
    typ:string ->
    container:Paje.name -> value:string -> Paje.properties -> Paje.properties
  val set_variable :
    typ:string ->
    container:Paje.name -> value:float -> Paje.properties -> Paje.properties
  val add_variable :
    typ:string ->
    container:Paje.name -> value:float -> Paje.properties -> Paje.properties
  val sub_variable :
    typ:string ->
    container:Paje.name -> value:float -> Paje.properties -> Paje.properties
  val start_link :
    typ:string ->
    container:Paje.name ->
    start_container:Paje.name ->
    value:string -> key:string -> Paje.properties -> Paje.properties
  val end_link :
    typ:string ->
    container:Paje.name ->
    end_container:Paje.name ->
    value:string -> key:string -> Paje.properties -> Paje.properties
  val header : string list
  val render : Event.t -> string
  val layout : Layout.t
  val layout_noheader : Layout.t
  type type_kind = Container | State | Event | Variable | Link | Entity_value
  exception Invalid_type of Paje.type_kind
  module type Definitions =
    sig
      val logger : string
      val level : Level.t
      type container_type
      val container_types :
        (Paje.Definitions.container_type * Paje.name *
         Paje.Definitions.container_type option * Paje.alias)
        list
      type state_type
      val state_types :
        (Paje.Definitions.state_type * Paje.name *
         Paje.Definitions.container_type * Paje.alias)
        list
      type event_type
      val event_types :
        (Paje.Definitions.event_type * Paje.name *
         Paje.Definitions.container_type * Paje.alias)
        list
      type variable_type
      val variable_types :
        (Paje.Definitions.variable_type * Paje.name *
         Paje.Definitions.container_type * Paje.color * Paje.alias)
        list
      type link_type
      val link_types :
        (Paje.Definitions.link_type * Paje.name *
         Paje.Definitions.container_type * Paje.Definitions.container_type *
         Paje.Definitions.container_type * Paje.alias)
        list
      type entity_value_type
      val entity_value_types :
        (Paje.Definitions.entity_value_type * Paje.name *
         Paje.Definitions.container_type * Paje.color * Paje.alias)
        list
    end
  module type S =
    sig
      val t : string
      type properties = (string * string) list
      type name = string
      type alias = string
      type color = float * float * float
      type container_type
      type state_type
      type event_type
      type variable_type
      type link_type
      type entity_value_type
      val create_container :
        name:Paje.S.name ->
        typ:Paje.S.container_type ->
        ?container:Paje.S.name ->
        ?alias:Paje.S.alias -> Paje.S.properties -> Paje.S.properties
      val destroy_container :
        name:Paje.S.name ->
        typ:Paje.S.container_type -> Paje.S.properties -> Paje.S.properties
      val set_state :
        typ:Paje.S.state_type ->
        container:Paje.S.name ->
        value:string -> Paje.S.properties -> Paje.S.properties
      val push_state :
        typ:Paje.S.state_type ->
        container:Paje.S.name ->
        value:string -> Paje.S.properties -> Paje.S.properties
      val pop_state :
        typ:Paje.S.state_type ->
        container:Paje.S.name -> Paje.S.properties -> Paje.S.properties
      val reset_state :
        typ:Paje.S.state_type ->
        container:Paje.S.name -> Paje.S.properties -> Paje.S.properties
      val new_event :
        typ:Paje.S.event_type ->
        container:Paje.S.name ->
        value:string -> Paje.S.properties -> Paje.S.properties
      val set_variable :
        typ:Paje.S.variable_type ->
        container:Paje.S.name ->
        value:float -> Paje.S.properties -> Paje.S.properties
      val add_variable :
        typ:Paje.S.variable_type ->
        container:Paje.S.name ->
        value:float -> Paje.S.properties -> Paje.S.properties
      val sub_variable :
        typ:Paje.S.variable_type ->
        container:Paje.S.name ->
        value:float -> Paje.S.properties -> Paje.S.properties
      val start_link :
        typ:Paje.S.link_type ->
        container:Paje.S.name ->
        start_container:Paje.S.name ->
        value:string -> key:string -> Paje.S.properties -> Paje.S.properties
      val end_link :
        typ:Paje.S.link_type ->
        container:Paje.S.name ->
        end_container:Paje.S.name ->
        value:string -> key:string -> Paje.S.properties -> Paje.S.properties
    end
  module Make :
    functor (D : Definitions->
      sig
        val t : string
        type properties = (string * string) list
        type name = string
        type alias = string
        type color = float * float * float
        type container_type = D.container_type
        type state_type = D.state_type
        type event_type = D.event_type
        type variable_type = D.variable_type
        type link_type = D.link_type
        type entity_value_type
        val create_container :
          name:name ->
          typ:container_type ->
          ?container:name -> ?alias:alias -> properties -> properties
        val destroy_container :
          name:name -> typ:container_type -> properties -> properties
        val set_state :
          typ:state_type ->
          container:name -> value:string -> properties -> properties
        val push_state :
          typ:state_type ->
          container:name -> value:string -> properties -> properties
        val pop_state :
          typ:state_type -> container:name -> properties -> properties
        val reset_state :
          typ:state_type -> container:name -> properties -> properties
        val new_event :
          typ:event_type ->
          container:name -> value:string -> properties -> properties
        val set_variable :
          typ:variable_type ->
          container:name -> value:float -> properties -> properties
        val add_variable :
          typ:variable_type ->
          container:name -> value:float -> properties -> properties
        val sub_variable :
          typ:variable_type ->
          container:name -> value:float -> properties -> properties
        val start_link :
          typ:link_type ->
          container:name ->
          start_container:name ->
          value:string -> key:string -> properties -> properties
        val end_link :
          typ:link_type ->
          container:name ->
          end_container:name ->
          value:string -> key:string -> properties -> properties
      end
end