sig
  module type Interface =
    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
  module Configure : functor (Config : ConfigInt.Type-> Interface
end