sig
  type ('a, 'access) t
  type 'a r = ('a, [ `readable ]) OBus_property.t
  type 'a w = ('a, [ `writable ]) OBus_property.t
  type 'a rw = ('a, [ `readable | `writable ]) OBus_property.t
  type map = (OBus_context.t * OBus_value.V.single) Map.Make(String).t
  type group
  type monitor =
      OBus_proxy.t ->
      OBus_name.interface ->
      Lwt_switch.t -> OBus_property.map React.signal Lwt.t
  val make :
    ?monitor:OBus_property.monitor ->
    ('a, 'access) OBus_member.Property.t ->
    OBus_proxy.t -> ('a, 'access) OBus_property.t
  val group :
    ?monitor:OBus_property.monitor ->
    OBus_proxy.t -> OBus_name.interface -> OBus_property.group
  val map_rw :
    ('-> 'b) -> ('-> 'a) -> 'OBus_property.rw -> 'OBus_property.rw
  val map_rw_with_context :
    (OBus_context.t -> '-> 'b) ->
    ('-> 'a) -> 'OBus_property.rw -> 'OBus_property.rw
  val map_r :
    ('-> 'b) -> ('a, [> `readable ]) OBus_property.t -> 'OBus_property.r
  val map_r_with_context :
    (OBus_context.t -> '-> 'b) ->
    ('a, [> `readable ]) OBus_property.t -> 'OBus_property.r
  val map_w :
    ('-> 'a) -> ('a, [> `writable ]) OBus_property.t -> 'OBus_property.w
  val get : ('a, [> `readable ]) OBus_property.t -> 'Lwt.t
  val get_with_context :
    ('a, [> `readable ]) OBus_property.t -> (OBus_context.t * 'a) Lwt.t
  val set : ('a, [> `writable ]) OBus_property.t -> '-> unit Lwt.t
  val get_group : OBus_property.group -> OBus_property.map Lwt.t
  val find_value :
    OBus_name.member -> OBus_property.map -> OBus_value.V.single
  val find_value_with_context :
    OBus_name.member ->
    OBus_property.map -> OBus_context.t * OBus_value.V.single
  val find : ('a, [> `readable ]) OBus_property.t -> OBus_property.map -> 'a
  val find_with_context :
    ('a, [> `readable ]) OBus_property.t ->
    OBus_property.map -> OBus_context.t * 'a
  val print_map : Format.formatter -> OBus_property.map -> unit
  val string_of_map : OBus_property.map -> string
  val monitor :
    ?switch:Lwt_switch.t ->
    ('a, [> `readable ]) OBus_property.t -> 'React.signal Lwt.t
  val monitor_group :
    ?switch:Lwt_switch.t ->
    OBus_property.group -> OBus_property.map React.signal Lwt.t
  val get_all_no_cache :
    OBus_proxy.t ->
    OBus_name.interface ->
    (OBus_context.t * (OBus_name.member * OBus_value.V.single) list) Lwt.t
  val update_map :
    OBus_context.t ->
    (OBus_name.member * OBus_value.V.single) list ->
    OBus_property.map -> OBus_property.map
  val map_of_list :
    OBus_context.t ->
    (OBus_name.member * OBus_value.V.single) list -> OBus_property.map
end