// GENERATED CONTENT - DO NOT EDIT
// Content was automatically extracted by Reffy into webref
// (https://github.com/w3c/webref)
// Source: Generic Sensor API (https://w3c.github.io/sensors/)

[SecureContext, Exposed=(DedicatedWorker, Window)]
interface Sensor : EventTarget {
  readonly attribute boolean activated;
  readonly attribute boolean hasReading;
  readonly attribute DOMHighResTimeStamp? timestamp;
  undefined start();
  undefined stop();
  attribute EventHandler onreading;
  attribute EventHandler onactivate;
  attribute EventHandler onerror;
};

dictionary SensorOptions {
  double frequency;
};

[SecureContext, Exposed=(DedicatedWorker, Window)]
interface SensorErrorEvent : Event {
  constructor(DOMString type, SensorErrorEventInit errorEventInitDict);
  readonly attribute DOMException error;
};

dictionary SensorErrorEventInit : EventInit {
  required DOMException error;
};

dictionary MockSensorConfiguration {
  required MockSensorType mockSensorType;
  boolean connected = true;
  double? maxSamplingFrequency;
  double? minSamplingFrequency;
};

dictionary MockSensor {
  double maxSamplingFrequency;
  double minSamplingFrequency;
  double requestedSamplingFrequency;
};

enum MockSensorType {
  "ambient-light",
  "accelerometer",
  "linear-acceleration",
  "gravity",
  "gyroscope",
  "magnetometer",
  "uncalibrated-magnetometer",
  "absolute-orientation",
  "relative-orientation",
  "geolocation",
  "proximity",
};

dictionary MockSensorReadingValues {
};
