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