sig
  type 'a t
  type 'a interface
  type 'a method_info
  type 'a signal_info
  type 'a property_info
  val attach : 'OBus_object.t -> '-> unit
  val get : 'OBus_object.t -> 'a
  val make :
    ?owner:OBus_peer.t ->
    ?common:bool ->
    ?interfaces:'OBus_object.interface list ->
    OBus_path.t -> 'OBus_object.t
  val path : 'OBus_object.t -> OBus_path.t
  val owner : 'OBus_object.t -> OBus_peer.t option
  val exports : 'OBus_object.t -> Set.Make(OBus_connection).t React.signal
  val introspect : 'OBus_object.t -> OBus_introspect.interface list
  val on_properties_changed :
    'OBus_object.t ->
    (OBus_name.interface ->
     (OBus_name.member * OBus_value.V.single option) list -> unit Lwt.t)
    Pervasives.ref
  val export : OBus_connection.t -> 'OBus_object.t -> unit
  val remove : OBus_connection.t -> 'OBus_object.t -> unit
  val remove_by_path : OBus_connection.t -> OBus_path.t -> unit
  val destroy : 'OBus_object.t -> unit
  val dynamic :
    connection:OBus_connection.t ->
    prefix:OBus_path.t ->
    handler:(OBus_context.t -> OBus_path.t -> 'OBus_object.t Lwt.t) -> unit
  val make_interface :
    name:OBus_name.interface ->
    ?annotations:OBus_introspect.annotation list ->
    ?methods:'OBus_object.method_info list ->
    ?signals:'OBus_object.signal_info list ->
    ?properties:'OBus_object.property_info list ->
    unit -> 'OBus_object.interface
  val make_interface_unsafe :
    OBus_name.interface ->
    OBus_introspect.annotation list ->
    'OBus_object.method_info array ->
    'OBus_object.signal_info array ->
    'OBus_object.property_info array -> 'OBus_object.interface
  val add_interfaces :
    'OBus_object.t -> 'OBus_object.interface list -> unit
  val remove_interfaces :
    'OBus_object.t -> 'OBus_object.interface list -> unit
  val remove_interfaces_by_names :
    'OBus_object.t -> OBus_name.interface list -> unit
  val introspectable : unit -> 'OBus_object.interface
  val properties : unit -> 'OBus_object.interface
  val method_info :
    ('a, 'b) OBus_member.Method.t ->
    ('OBus_object.t -> '-> 'Lwt.t) -> 'OBus_object.method_info
  val signal_info : 'OBus_member.Signal.t -> 'OBus_object.signal_info
  val property_r_info :
    ('a, [ `readable ]) OBus_member.Property.t ->
    ('OBus_object.t -> 'React.signal) -> 'OBus_object.property_info
  val property_w_info :
    ('a, [ `writable ]) OBus_member.Property.t ->
    ('OBus_object.t -> '-> unit Lwt.t) -> 'OBus_object.property_info
  val property_rw_info :
    ('a, [ `readable | `writable ]) OBus_member.Property.t ->
    ('OBus_object.t -> 'React.signal) ->
    ('OBus_object.t -> '-> unit Lwt.t) -> 'OBus_object.property_info
  val emit :
    'OBus_object.t ->
    interface:OBus_name.interface ->
    member:OBus_name.member ->
    ?peer:OBus_peer.t -> 'OBus_value.C.sequence -> '-> unit Lwt.t
end