sig
  type t = private OBus_proxy.proxy
  external of_proxy : OBus_proxy.proxy -> t = "%identity"
  external to_proxy : t -> OBus_proxy.proxy = "%identity"
  type typ =
      [ `Battery
      | `Keyboard
      | `Line_power
      | `Monitor
      | `Mouse
      | `Pda
      | `Phone
      | `Unknown
      | `Ups ]
  type state =
      [ `Charging
      | `Discharging
      | `Empty
      | `Fully_charged
      | `Pending_charge
      | `Pending_discharge
      | `Unknown ]
  type technology =
      [ `Lead_acid
      | `Lithium_ion
      | `Lithium_iron_phosphate
      | `Lithium_polymer
      | `Nickel_cadmium
      | `Nickel_metal_hydride
      | `Unknown ]
  val general_error : OBus_error.name
  val get_statistics : t -> typ:string -> (float * float) list Lwt.t
  val get_history :
    t ->
    typ:string ->
    timespan:int -> resolution:int -> (int * float * int) list Lwt.t
  val refresh : t -> unit Lwt.t
  val changed : t -> unit OBus_signal.t
  val recall_url : t -> string OBus_property.r
  val recall_vendor : t -> string OBus_property.r
  val recall_notice : t -> bool OBus_property.r
  val technology : t -> UPower_device.technology OBus_property.r
  val capacity : t -> float OBus_property.r
  val is_rechargeable : t -> bool OBus_property.r
  val state : t -> UPower_device.state OBus_property.r
  val is_present : t -> bool OBus_property.r
  val percentage : t -> float OBus_property.r
  val time_to_full : t -> int64 OBus_property.r
  val time_to_empty : t -> int64 OBus_property.r
  val voltage : t -> float OBus_property.r
  val energy_rate : t -> float OBus_property.r
  val energy_full_design : t -> float OBus_property.r
  val energy_full : t -> float OBus_property.r
  val energy_empty : t -> float OBus_property.r
  val energy : t -> float OBus_property.r
  val online : t -> bool OBus_property.r
  val has_statistics : t -> bool OBus_property.r
  val has_history : t -> bool OBus_property.r
  val power_supply : t -> bool OBus_property.r
  val typ : t -> UPower_device.typ OBus_property.r
  val update_time : t -> int64 OBus_property.r
  val serial : t -> string OBus_property.r
  val model : t -> string OBus_property.r
  val vendor : t -> string OBus_property.r
  val native_path : t -> string OBus_property.r
  val properties : t -> OBus_property.group
end