sig
  type t
  type descr =
      Syspath of string
    | Subsystem_sysname of string * string
    | Device_id of string
    | Environment
  val create : Libudev.Context.t -> Libudev.Device.descr -> Libudev.Device.t
  val context : Libudev.Device.t -> Libudev.Context.t
  val syspath : Libudev.Device.t -> string
  val sysname : Libudev.Device.t -> string
  val sysnum : Libudev.Device.t -> string option
  val devpath : Libudev.Device.t -> string
  val tags : Libudev.Device.t -> string list
  val has_tag : Libudev.Device.t -> string -> bool
  val subsystem : Libudev.Device.t -> string
  val driver : Libudev.Device.t -> string option
  val devtype : Libudev.Device.t -> string option
  val devnode : Libudev.Device.t -> string option
  val devlinks : Libudev.Device.t -> string list
  val is_initialized : Libudev.Device.t -> bool
  val usec_since_initialized : Libudev.Device.t -> Stdint.Uint64.t
  val parent : Libudev.Device.t -> Libudev.Device.t option
  val find_parent :
    Libudev.Device.t ->
    ?devtype:string -> subsystem:string -> Libudev.Device.t option
  type action = Add | Remove | Change | Online | Offline | Other of string
  val string_of_action : Libudev.Device.action -> string
  val action : Libudev.Device.t -> Libudev.Device.action option
  val seqnum : Libudev.Device.t -> Stdint.Uint64.t
  val properties : Libudev.Device.t -> (string * string) list
  val property : Libudev.Device.t -> string -> string option
  val int_property : Libudev.Device.t -> string -> int option
  val bool_property : Libudev.Device.t -> string -> bool option
  val sysattrs : Libudev.Device.t -> (string * string) list
  val sysattr : Libudev.Device.t -> string -> string option
  val int_sysattr : Libudev.Device.t -> string -> int option
  val bool_sysattr : Libudev.Device.t -> string -> bool option
  val set_sysattr : Libudev.Device.t -> string -> string -> unit
end