sig
  type 'a dictionary
  type 'a tag
  type 'a prefix
  val tag_name : 'Server.Data.Enum.tag -> string
  val dictionary :
    page:Server.Doc.page ->
    name:string ->
    title:string ->
    descr:Markdown.text -> unit -> 'Server.Data.Enum.dictionary
  val tag :
    'Server.Data.Enum.dictionary ->
    name:string ->
    ?label:Markdown.text ->
    descr:Markdown.text -> ?value:'-> unit -> 'Server.Data.Enum.tag
  val prefix :
    'Server.Data.Enum.dictionary ->
    prefix:string ->
    ?var:string ->
    ?label:Markdown.text ->
    descr:Markdown.text -> unit -> 'Server.Data.Enum.prefix
  val instance :
    'Server.Data.Enum.prefix -> string -> 'Server.Data.Enum.tag
  val extends :
    'Server.Data.Enum.dictionary ->
    'Server.Data.Enum.prefix ->
    name:string ->
    ?label:Markdown.text ->
    descr:Markdown.text -> ?value:'-> unit -> 'Server.Data.Enum.tag
  val tags : 'Server.Data.Enum.dictionary -> Server.Data.Tag.t list
  val page : 'Server.Data.Enum.dictionary -> Server.Doc.page
  val name : 'Server.Data.Enum.dictionary -> string
  val syntax : 'Server.Data.Enum.dictionary -> Markdown.text
  val publish :
    'Server.Data.Enum.dictionary ->
    ?tag:('-> 'Server.Data.Enum.tag) ->
    unit -> (module Server.Data.S with type t = 'a)
end