sig
  type field =
      [ `abstract of string
      | `authors of Sebib.AuthorList.t
      | `bibtex of string
      | `citation of string
      | `comment of string * string
      | `doi of string
      | `how of string
      | `id of string
      | `keywords of string list
      | `note of string
      | `pdfurl of string
      | `tags of string list
      | `title of string
      | `url of string
      | `year of string ]
  type field_name =
      [ `abstract
      | `authors
      | `bibtex
      | `citation
      | `comment of string
      | `doi
      | `how
      | `id
      | `keywords
      | `note
      | `pdfurl
      | `tags
      | `title
      | `url
      | `year ]
  type entry = Sebib.Biblio.field list
  type set = Sebib.Biblio.entry list
  val is_valid :
    Sebib.Biblio.set -> [ `no of Sebib.Biblio.entry list | `yes ]
  val is_bibtexable :
    Sebib.Biblio.set -> [ `no of Sebib.Biblio.entry list | `yes ]
  val find_field :
    Sebib.Biblio.field_name ->
    Sebib.Biblio.entry -> Sebib.Biblio.field option
  val field_or_empty :
    ?title_style:[ `none | `punct ] ->
    ?authors_style:Sebib.AuthorList.style ->
    Sebib.Biblio.field_name -> Sebib.Biblio.entry -> string
  val field_name_of_string : string -> Sebib.Biblio.field_name
  val sort :
    ?by:Sebib.Biblio.field_name ->
    ?reverse:bool -> Sebib.Biblio.set -> Sebib.Biblio.set
  val unique :
    ?cmp:(Sebib.Biblio.entry -> Sebib.Biblio.entry -> bool) ->
    Sebib.Biblio.set -> Sebib.Biblio.entry list
  val compare_by_field :
    Sebib.Biblio.field_name ->
    Sebib.Biblio.entry -> Sebib.Biblio.entry -> bool
end