sig
  type unichar = int
  type unistring = Glib.unichar array
  exception GError of string
  exception Critical of string * string
  module Main :
    sig
      type t
      val create : bool -> Glib.Main.t
      val iteration : bool -> bool
      val pending : unit -> bool
      val is_running : Glib.Main.t -> bool
      val quit : Glib.Main.t -> unit
      val destroy : Glib.Main.t -> unit
      type locale_category =
        [ `ALL | `COLLATE | `CTYPE | `MESSAGES | `MONETARY | `NUMERIC | `TIME ]
      val setlocale : Glib.Main.locale_category -> string option -> string
    end
  module Timeout :
    sig
      type id
      val add : ms:int -> callback:(unit -> bool) -> Glib.Timeout.id
      val remove : Glib.Timeout.id -> unit
    end
  module Idle :
    sig
      type id
      val add : callback:(unit -> bool) -> Glib.Idle.id
      val remove : Glib.Idle.id -> unit
    end
  module Io :
    sig
      type channel
      type condition = [ `ERR | `HUP | `IN | `NVAL | `OUT | `PRI ]
      type id
      val channel_of_descr : Unix.file_descr -> Glib.Io.channel
      val add_watch :
        cond:Glib.Io.condition ->
        callback:(unit -> bool) -> ?prio:int -> Glib.Io.channel -> Glib.Io.id
      val remove : Glib.Io.id -> unit
      val read : Glib.Io.channel -> buf:string -> pos:int -> len:int -> int
    end
  module Message :
    sig
      type print_func = string -> unit
      val set_print_handler : (string -> unit) -> Glib.Message.print_func
      type log_level =
        [ `CRITICAL
        | `DEBUG
        | `ERROR
        | `FLAG_FATAL
        | `FLAG_RECURSION
        | `INFO
        | `MESSAGE
        | `WARNING ]
      val log_level : Glib.Message.log_level -> int
      type log_handler
      val set_log_handler :
        domain:string ->
        levels:Glib.Message.log_level list ->
        (level:int -> string -> unit) -> Glib.Message.log_handler
      val remove_log_handler : Glib.Message.log_handler -> unit
      val handle_criticals : domain:string -> unit
    end
  module Convert :
    sig
      type error =
          NO_CONVERSION
        | ILLEGAL_SEQUENCE
        | FAILED
        | PARTIAL_INPUT
        | BAD_URI
        | NOT_ABSOLUTE_PATH
      exception Error of Glib.Convert.error * string
      val convert :
        string -> to_codeset:string -> from_codeset:string -> string
      val convert_with_fallback :
        ?fallback:string ->
        to_codeset:string -> from_codeset:string -> string -> string
      val locale_from_utf8 : string -> string
      val locale_to_utf8 : string -> string
      val filename_from_utf8 : string -> string
      val filename_to_utf8 : string -> string
      val get_charset : unit -> bool * string
    end
  module Unichar :
    sig
      val to_lower : Glib.unichar -> Glib.unichar
      val to_upper : Glib.unichar -> Glib.unichar
      val to_title : Glib.unichar -> Glib.unichar
      val digit_value : Glib.unichar -> int
      val xdigit_value : Glib.unichar -> int
      val validate : Glib.unichar -> bool
      val isalnum : Glib.unichar -> bool
      val isalpha : Glib.unichar -> bool
      val iscntrl : Glib.unichar -> bool
      val isdigit : Glib.unichar -> bool
      val isgraph : Glib.unichar -> bool
      val islower : Glib.unichar -> bool
      val isprint : Glib.unichar -> bool
      val ispunct : Glib.unichar -> bool
      val isspace : Glib.unichar -> bool
      val isupper : Glib.unichar -> bool
      val isxdigit : Glib.unichar -> bool
      val istitle : Glib.unichar -> bool
      val isdefined : Glib.unichar -> bool
      val iswide : Glib.unichar -> bool
    end
  module Utf8 :
    sig
      val validate : string -> bool
      val length : string -> int
      val from_unichar : Glib.unichar -> string
      val from_unistring : Glib.unistring -> string
      val to_unichar : string -> pos:int Pervasives.ref -> Glib.unichar
      val to_unistring : string -> Glib.unistring
      val first_char : string -> Glib.unichar
    end
  module Markup : sig val escape_text : string -> string end
end