sig
  type 'a dictionary
  type 'a tag
  type 'a prefix
  val tag_name : 'Server.Data.Enum.tag -> string
  val dictionary : unit -> 'Server.Data.Enum.dictionary
  val tag :
    name:string ->
    ?label:Markdown.text ->
    descr:Markdown.text ->
    ?value:'-> 'Server.Data.Enum.dictionary -> 'Server.Data.Enum.tag
  val add :
    name:string ->
    ?label:Markdown.text ->
    descr:Markdown.text ->
    ?value:'-> 'Server.Data.Enum.dictionary -> unit
  val find : 'Server.Data.Enum.dictionary -> 'Server.Data.Enum.tag -> 'a
  val lookup :
    'Server.Data.Enum.dictionary -> '-> 'Server.Data.Enum.tag
  val find_tag :
    'Server.Data.Enum.dictionary -> string -> 'Server.Data.Enum.tag
  val prefix :
    name:string ->
    ?var:string ->
    ?label:Markdown.text ->
    descr:Markdown.text ->
    'Server.Data.Enum.dictionary -> 'Server.Data.Enum.prefix
  val instance :
    'Server.Data.Enum.prefix -> string -> 'Server.Data.Enum.tag
  val extends :
    name:string ->
    ?label:Markdown.text ->
    descr:Markdown.text ->
    ?value:'-> 'Server.Data.Enum.prefix -> 'Server.Data.Enum.tag
  val tags : 'Server.Data.Enum.dictionary -> Server.Data.Tag.t list
  val set_lookup :
    'Server.Data.Enum.dictionary -> ('-> 'Server.Data.Enum.tag) -> unit
  val publish :
    package:Server.Package.package ->
    name:string ->
    descr:Markdown.text ->
    'Server.Data.Enum.dictionary -> (module Server.Data.S with type t = 'a)
end