sig
  val unicode_version : string
  type custom
  type boundary =
      [ `Custom of Uuseg.custom
      | `Grapheme_cluster
      | `Line_break
      | `Sentence
      | `Word ]
  val pp_boundary : Stdlib.Format.formatter -> Uuseg.boundary -> unit
  type t
  type ret = [ `Await | `Boundary | `End | `Uchar of Stdlib.Uchar.t ]
  val create : [< Uuseg.boundary ] -> Uuseg.t
  val boundary : Uuseg.t -> Uuseg.boundary
  val add :
    Uuseg.t -> [ `Await | `End | `Uchar of Stdlib.Uchar.t ] -> Uuseg.ret
  val mandatory : Uuseg.t -> bool
  val copy : Uuseg.t -> Uuseg.t
  val pp_ret : Stdlib.Format.formatter -> [< Uuseg.ret ] -> unit
  val custom :
    ?mandatory:('-> bool) ->
    name:string ->
    create:(unit -> 'a) ->
    copy:('-> 'a) ->
    add:('-> [ `Await | `End | `Uchar of Stdlib.Uchar.t ] -> Uuseg.ret) ->
    unit -> Uuseg.custom
  val err_exp_await : [< Uuseg.ret ] -> 'a
  val err_ended : [< Uuseg.ret ] -> 'a
end