sig
  exception Malformed_code
  exception Out_of_range
  type t
  val automatic :
    string ->
    CharEncoding.Interface.t list ->
    CharEncoding.Interface.t -> CharEncoding.Interface.t
  val new_enc : string -> CharEncoding.Interface.t -> unit
  val alias : string -> string -> unit
  val of_name : string -> CharEncoding.Interface.t
  val name_of : CharEncoding.Interface.t -> string
  val ascii : CharEncoding.Interface.t
  val latin1 : CharEncoding.Interface.t
  val utf8 : CharEncoding.Interface.t
  val utf16 : CharEncoding.Interface.t
  val utf16be : CharEncoding.Interface.t
  val utf16le : CharEncoding.Interface.t
  val utf32 : CharEncoding.Interface.t
  val utf32be : CharEncoding.Interface.t
  val utf32le : CharEncoding.Interface.t
  val ucs4 : CharEncoding.Interface.t
  val recode_string :
    in_enc:CharEncoding.Interface.t ->
    out_enc:CharEncoding.Interface.t -> string -> string
  class uchar_input_channel_of :
    CharEncoding.Interface.t ->
    OOChannel.char_input_channel -> [UChar.t] OOChannel.obj_input_channel
  class uchar_output_channel_of :
    CharEncoding.Interface.t ->
    OOChannel.char_output_channel -> [UChar.t] OOChannel.obj_output_channel
  class convert_uchar_input :
    CharEncoding.Interface.t ->
    UChar.t OOChannel.obj_input_channel -> OOChannel.char_input_channel
  class convert_uchar_output :
    CharEncoding.Interface.t ->
    UChar.t OOChannel.obj_output_channel -> OOChannel.char_output_channel
  class convert_input :
    in_enc:CharEncoding.Interface.t ->
    out_enc:CharEncoding.Interface.t ->
    OOChannel.char_input_channel -> OOChannel.char_input_channel
  class convert_output :
    in_enc:CharEncoding.Interface.t ->
    out_enc:CharEncoding.Interface.t ->
    OOChannel.char_output_channel -> OOChannel.char_output_channel
  class out_channel :
    CharEncoding.Interface.t ->
    Pervasives.out_channel -> [UChar.t] OOChannel.obj_output_channel
  class in_channel :
    CharEncoding.Interface.t ->
    Pervasives.in_channel -> [UChar.t] OOChannel.obj_input_channel
  val ustream_of :
    CharEncoding.Interface.t -> char Stream.t -> UChar.t Stream.t
  val char_stream_of :
    CharEncoding.Interface.t -> UChar.t Stream.t -> char Stream.t
  module type Type =
    sig
      type text
      val decode :
        CharEncoding.Interface.t ->
        string -> CharEncoding.Interface.Type.text
      val encode :
        CharEncoding.Interface.t ->
        CharEncoding.Interface.Type.text -> string
    end
  module Make :
    functor (Text : UnicodeString.Type->
      sig
        type text = Text.t
        val decode : t -> string -> text
        val encode : t -> text -> string
      end
end