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