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