sig
  type t = OBus_connection.t
  val session : ?switch:Lwt_switch.t -> unit -> OBus_bus.t Lwt.t
  val system : ?switch:Lwt_switch.t -> unit -> OBus_bus.t Lwt.t
  val of_addresses :
    ?switch:Lwt_switch.t -> OBus_address.t list -> OBus_bus.t Lwt.t
  val register_connection : OBus_connection.t -> unit Lwt.t
  val exit_on_disconnect : exn -> 'a
  val get_peer : OBus_bus.t -> OBus_name.bus -> OBus_peer.t Lwt.t
  val get_proxy :
    OBus_bus.t -> OBus_name.bus -> OBus_path.t -> OBus_proxy.t Lwt.t
  val name : OBus_bus.t -> OBus_name.bus
  val names : OBus_bus.t -> Set.Make(String).t React.signal
  val hello : OBus_bus.t -> OBus_name.bus Lwt.t
  exception Access_denied of string
  type request_name_result =
      [ `Already_owner | `Exists | `In_queue | `Primary_owner ]
  val request_name :
    OBus_bus.t ->
    ?allow_replacement:bool ->
    ?replace_existing:bool ->
    ?do_not_queue:bool -> OBus_name.bus -> OBus_bus.request_name_result Lwt.t
  type release_name_result = [ `Non_existent | `Not_owner | `Released ]
  val release_name :
    OBus_bus.t -> OBus_name.bus -> OBus_bus.release_name_result Lwt.t
  type start_service_by_name_result = [ `Already_running | `Success ]
  val start_service_by_name :
    OBus_bus.t ->
    OBus_name.bus -> OBus_bus.start_service_by_name_result Lwt.t
  val name_has_owner : OBus_bus.t -> OBus_name.bus -> bool Lwt.t
  val list_names : OBus_bus.t -> OBus_name.bus list Lwt.t
  val list_activatable_names : OBus_bus.t -> OBus_name.bus list Lwt.t
  exception Name_has_no_owner of string
  val get_name_owner : OBus_bus.t -> OBus_name.bus -> OBus_name.bus Lwt.t
  val list_queued_owners :
    OBus_bus.t -> OBus_name.bus -> OBus_name.bus list Lwt.t
  exception Service_unknown of string
  exception Match_rule_invalid of string
  val add_match : OBus_bus.t -> OBus_match.rule -> unit Lwt.t
  exception Match_rule_not_found of string
  val remove_match : OBus_bus.t -> OBus_match.rule -> unit Lwt.t
  exception Adt_audit_data_unknown of string
  exception Selinux_security_context_unknown of string
  val update_activation_environment :
    OBus_bus.t -> (string * string) list -> unit Lwt.t
  val get_connection_unix_user : OBus_bus.t -> OBus_name.bus -> int Lwt.t
  val get_connection_unix_process_id :
    OBus_bus.t -> OBus_name.bus -> int Lwt.t
  val get_adt_audit_session_data :
    OBus_bus.t -> OBus_name.bus -> string Lwt.t
  val get_connection_selinux_security_context :
    OBus_bus.t -> OBus_name.bus -> string Lwt.t
  val reload_config : OBus_bus.t -> unit Lwt.t
  val get_id : OBus_bus.t -> OBus_uuid.t Lwt.t
  val name_owner_changed :
    OBus_bus.t ->
    (OBus_name.bus * OBus_name.bus * OBus_name.bus) OBus_signal.t
  val name_lost : OBus_bus.t -> OBus_name.bus OBus_signal.t
  val name_acquired : OBus_bus.t -> OBus_name.bus OBus_signal.t
end