sig
  type t = { peer : OBus_peer.t; path : OBus_path.t; }
  val compare : OBus_proxy.t -> OBus_proxy.t -> int
  val make : peer:OBus_peer.t -> path:OBus_path.t -> OBus_proxy.t
  val peer : OBus_proxy.t -> OBus_peer.t
  val path : OBus_proxy.t -> OBus_path.t
  val connection : OBus_proxy.t -> OBus_connection.t
  val name : OBus_proxy.t -> OBus_name.bus
  val introspect : OBus_proxy.t -> OBus_introspect.document Lwt.t
  val call :
    OBus_proxy.t ->
    interface:OBus_name.interface ->
    member:OBus_name.member ->
    i_args:'OBus_value.C.sequence ->
    o_args:'OBus_value.C.sequence -> '-> 'Lwt.t
  val call_with_context :
    OBus_proxy.t ->
    interface:OBus_name.interface ->
    member:OBus_name.member ->
    i_args:'OBus_value.C.sequence ->
    o_args:'OBus_value.C.sequence -> '-> (OBus_context.t * 'b) Lwt.t
  val call_no_reply :
    OBus_proxy.t ->
    interface:OBus_name.interface ->
    member:OBus_name.member ->
    i_args:'OBus_value.C.sequence -> '-> unit Lwt.t
  type proxy = OBus_proxy.t
  module type Private =
    sig
      type t = private OBus_proxy.proxy
      external of_proxy : OBus_proxy.proxy -> OBus_proxy.Private.t
        = "%identity"
      external to_proxy : OBus_proxy.Private.t -> OBus_proxy.proxy
        = "%identity"
    end
  module Private :
    sig
      type t = OBus_proxy.proxy
      external of_proxy : OBus_proxy.proxy -> OBus_proxy.Private.t
        = "%identity"
      external to_proxy : OBus_proxy.Private.t -> OBus_proxy.proxy
        = "%identity"
    end
end