interface Navigator {
};

interface Event {
};
interface Gamepad {
    readonly    attribute DOMString           id;
    readonly    attribute long                index;
    readonly    attribute boolean             connected;
    readonly    attribute DOMHighResTimeStamp timestamp;
    readonly    attribute GamepadMappingType  mapping;
    readonly    attribute FrozenArray axes;
    readonly    attribute FrozenArray buttons;
};

enum GamepadMappingType {
  "",
  "standard"
};

interface GamepadButton {
    readonly    attribute boolean pressed;
    readonly    attribute double  value;
};

[Constructor(DOMString type, optional GamepadEventInit eventInitDict)]
interface GamepadEvent : Event
{
  readonly attribute Gamepad? gamepad;
};

dictionary GamepadEventInit : EventInit
{
  Gamepad? gamepad = null;
};

partial interface Navigator {
    sequence getGamepads();
};