sig
  type error
  type bus
  type message
  type pending_call
  type ty =
      Unknown
    | Byte of char
    | Bool of bool
    | Int16 of int
    | UInt16 of int
    | Int32 of int32
    | UInt32 of int32
    | Int64 of int64
    | UInt64 of int64
    | Double of float
    | String of string
    | ObjectPath of string
  val string_of_ty : DBus.ty -> string
  module Error :
    sig
      val init : unit -> DBus.error
      val is_set : DBus.error -> bool
      val has_name : DBus.error -> string -> bool
    end
  module Bus :
    sig
      type ty = Session | System | Starter
      type flags = Replace_existing
      val get : DBus.Bus.ty -> DBus.error -> DBus.bus
      val get_private : DBus.Bus.ty -> DBus.error -> DBus.bus
      val register : DBus.bus -> DBus.error -> bool
      val set_unique_name : DBus.bus -> string -> bool
      val get_unique_name : DBus.bus -> string
      val request_name : DBus.bus -> string -> int -> DBus.error -> unit
      val release_name : DBus.bus -> string -> DBus.error -> unit
      val has_owner : DBus.bus -> string -> DBus.error -> bool
      val add_match : DBus.bus -> string -> DBus.error -> unit
      val remove_match : DBus.bus -> string -> DBus.error -> unit
    end
  module Message :
    sig
      type message_type =
          Invalid
        | Method_call
        | Method_return
        | Error
        | Signal
      val create : DBus.Message.message_type -> DBus.message
      val new_method_call :
        string -> string -> string -> string -> DBus.message
      val new_method_return : DBus.message -> DBus.message
      val new_signal : string -> string -> string -> DBus.message
      val new_error : DBus.message -> string -> string -> DBus.message
      val append : DBus.message -> DBus.ty list -> unit
      val get_rev : DBus.message -> DBus.ty list
      val get : DBus.message -> DBus.ty list
      val set_path : DBus.message -> string -> unit
      val set_interface : DBus.message -> string -> unit
      val set_member : DBus.message -> string -> unit
      val set_error_name : DBus.message -> string -> unit
      val set_destination : DBus.message -> string -> unit
      val set_sender : DBus.message -> string -> unit
      val set_reply_serial : DBus.message -> int32 -> unit
      val set_auto_start : DBus.message -> bool -> unit
      val has_path : DBus.message -> string -> bool
      val has_interface : DBus.message -> string -> bool
      val has_member : DBus.message -> string -> bool
      val has_destination : DBus.message -> string -> bool
      val has_sender : DBus.message -> string -> bool
      val has_signature : DBus.message -> string -> bool
      val get_type : DBus.message -> DBus.Message.message_type
      val get_path : DBus.message -> string option
      val get_interface : DBus.message -> string option
      val get_member : DBus.message -> string option
      val get_error_name : DBus.message -> string option
      val get_destination : DBus.message -> string option
      val get_sender : DBus.message -> string option
      val get_signature : DBus.message -> string option
      val get_serial : DBus.message -> int32
      val get_reply_serial : DBus.message -> int32
      val get_auto_start : DBus.message -> bool
      val is_signal : DBus.message -> string -> string -> bool
      val is_method_call : DBus.message -> string -> string -> bool
      val is_error : DBus.message -> string -> bool
    end
  module Connection :
    sig
      val send : DBus.bus -> DBus.message -> int32
      val send_with_reply :
        DBus.bus -> DBus.message -> int -> DBus.pending_call
      val send_with_reply_and_block :
        DBus.bus -> DBus.message -> int -> DBus.error -> DBus.message
      val add_filter : DBus.bus -> (DBus.bus -> DBus.message -> bool) -> unit
      val flush : DBus.bus -> unit
      val read_write : DBus.bus -> int -> bool
      val read_write_dispatch : DBus.bus -> int -> bool
      val pop_message : DBus.bus -> DBus.message option
      val get_fd : DBus.bus -> Unix.file_descr
    end
  module PendingCall :
    sig
      val block : DBus.pending_call -> unit
      val cancel : DBus.pending_call -> unit
      val get_completed : DBus.pending_call -> bool
      val steal_reply : DBus.pending_call -> DBus.message
    end
end