sig
  type t = private OBus_proxy.proxy
  external of_proxy : OBus_proxy.proxy -> t = "%identity"
  external to_proxy : t -> OBus_proxy.proxy = "%identity"
  val manager : unit -> t Lwt.t
  val get_all_devices : t -> Hal_device.t list Lwt.t
  val get_all_devices_with_properties :
    t -> (Hal_device.t * (string * Hal_device.property) list) list Lwt.t
  val device_exists : t -> Hal_device.udi -> bool Lwt.t
  val find_device_string_match :
    t -> string -> string -> Hal_device.t list Lwt.t
  val find_device_by_capability : t -> string -> Hal_device.t list Lwt.t
  val new_device : t -> Hal_device.t Lwt.t
  val remove : t -> Hal_device.t -> unit Lwt.t
  val commit_to_gdl : t -> string -> string -> unit Lwt.t
  val acquire_global_interface_lock : t -> string -> bool -> unit Lwt.t
  val release_global_interface_lock : t -> string -> unit Lwt.t
  val singleton_addon_is_ready : t -> string -> unit Lwt.t
  val device_added : t -> Hal_device.t OBus_signal.t
  val device_removed : t -> Hal_device.t OBus_signal.t
  val new_capability : t -> (Hal_device.t * string) OBus_signal.t
  val global_interface_lock_acquired :
    t -> (string * string * int) OBus_signal.t
  val global_interface_lock_released :
    t -> (string * string * int) OBus_signal.t
end