sig
  type elt = Unicode.utf32_char
  val sequence :
    fail:([> `illegal_sequence | `surrogate_fragment of int ] -> int) ->
    Unicode.UTF32.elt -> int
  val max_sequence : int
  val is_trailing : Unicode.UTF32.elt -> bool
  val decode3 :
    ('-> '-> Unicode.UTF32.elt) ->
    ('-> '-> 'e) ->
    ('-> '-> bool) ->
    ('-> '-> '-> '-> '-> '-> Stdlib.Uchar.t -> 'f) ->
    fail:('->
          '-> '-> '-> '-> '-> [> Unicode.utf32_decode_error ] -> 'f) ->
    '-> '-> '-> '-> '-> 'f
  val decode :
    ('-> '-> Unicode.UTF32.elt) ->
    ('-> '-> 'b) ->
    ('-> '-> bool) ->
    ('-> '-> '-> Stdlib.Uchar.t -> 'c) ->
    fail:('-> '-> '-> [> Unicode.utf32_decode_error ] -> 'c) ->
    '-> '-> 'c
  val encode4 :
    ('-> '-> Unicode.UTF32.elt -> 'f) ->
    fail:('-> '-> '-> '-> '-> '-> [>  ] -> 'f) ->
    '-> '-> '-> '-> '-> '-> Stdlib.Uchar.t -> 'f
  val encode :
    ('-> '-> Unicode.UTF32.elt -> 'b) ->
    fail:('-> '-> [>  ] -> 'b) -> '-> '-> Stdlib.Uchar.t -> 'b
  type t = Unicode.utf32_string
  val compare : Unicode.UTF32.t -> Unicode.UTF32.t -> int
  external equal : Unicode.UTF32.t -> Unicode.UTF32.t -> bool = "%equal"
  external length : Unicode.UTF32.t -> int = "%caml_ba_dim_1"
  val get : Unicode.UTF32.t -> int -> Unicode.UTF32.elt
  val unsafe_get : Unicode.UTF32.t -> int -> Unicode.UTF32.elt
  val set : Unicode.UTF32.t -> int -> Unicode.UTF32.elt -> unit
  val unsafe_set : Unicode.UTF32.t -> int -> Unicode.UTF32.elt -> unit
  val empty : Unicode.UTF32.t
  val create : int -> Unicode.UTF32.t
  val copy : Unicode.UTF32.t -> Unicode.UTF32.t
  val cat : Unicode.UTF32.t -> Unicode.UTF32.t -> Unicode.UTF32.t
  external sub : Unicode.UTF32.t -> int -> int -> Unicode.UTF32.t
    = "caml_ba_sub"
  val fill : Unicode.UTF32.t -> int -> int -> Unicode.UTF32.elt -> unit
  val blit : Unicode.UTF32.t -> int -> Unicode.UTF32.t -> int -> int -> unit
  val lead : Unicode.UTF32.t -> int -> int
  val rear : Unicode.UTF32.t -> int -> int
  val get_code :
    fail:(Unicode.UTF32.t ->
          int -> int -> [> Unicode.utf32_decode_error ] -> Stdlib.Uchar.t) ->
    Unicode.UTF32.t -> int Stdlib.ref -> Stdlib.Uchar.t
  val set_code :
    fail:(Unicode.UTF32.t -> int -> [>  ] -> Stdlib.Uchar.t) ->
    Unicode.UTF32.t -> int Stdlib.ref -> Stdlib.Uchar.t -> unit
  val of_utf8 :
    fail:(Unicode.utf8_string ->
          int -> int -> [> Unicode.utf8_decode_error ] -> Stdlib.Uchar.t) ->
    Unicode.utf8_string -> Unicode.UTF32.t
  val of_utf16 :
    fail:(Unicode.utf16_string ->
          int -> int -> [> Unicode.utf32_decode_error ] -> Stdlib.Uchar.t) ->
    Unicode.utf16_string -> Unicode.UTF32.t
  val of_array : Unicode.UTF32.elt array -> Unicode.UTF32.t
end