sig
  type t = private OBus_proxy.proxy
  external of_proxy : OBus_proxy.proxy -> t = "%identity"
  external to_proxy : t -> OBus_proxy.proxy = "%identity"
  val user : unit -> t Lwt.t
  val system : unit -> t Lwt.t
  module Connection :
    sig
      type t = private OBus_proxy.proxy
      external of_proxy : OBus_proxy.proxy -> t = "%identity"
      external to_proxy : t -> OBus_proxy.proxy = "%identity"
      val update :
        t ->
        properties:(string * (string * OBus_value.V.single) list) list ->
        unit Lwt.t
      val delete : t -> unit Lwt.t
      val get_settings :
        t -> (string * (string * OBus_value.V.single) list) list Lwt.t
      val updated :
        t ->
        (string * (string * OBus_value.V.single) list) list OBus_signal.t
      val removed : t -> unit OBus_signal.t
      module Secrets :
        sig
          val get_secrets :
            t ->
            setting_name:string ->
            hints:string list ->
            request_new:bool ->
            (string * (string * OBus_value.V.single) list) list Lwt.t
        end
    end
  module System :
    sig
      val save_hostname : t -> hostname:string -> unit Lwt.t
      val hostname : t -> string OBus_property.r
      val can_modify : t -> bool OBus_property.r
      val properties_changed :
        t -> (string * OBus_value.V.single) list OBus_signal.t
      val check_permissions : t -> unit OBus_signal.t
      val get_permissions : t -> int Lwt.t
    end
  val list_connections : t -> Nm_settings.Connection.t list Lwt.t
  val add_connection :
    t ->
    connection:(string * (string * OBus_value.V.single) list) list ->
    unit Lwt.t
  val new_connection : t -> Nm_settings.Connection.t OBus_signal.t
end