export interface IEventTarget { addEventListener ( type , listener ) : void ; } export interface ICanvas extends IEventTarget { requestPointerLock ( ) : void ; } export interface IDocument extends IEventTarget { pointerLockElement ? : any ; exitPointerLock ( ) : void ; } export interface IWindow extends IEventTarget { } export interface IGamepadButton { pressed : boolean ; } export interface INavigator { getGamepads ( ) : IGamepad [ ] ; } export interface IGamepad { index : number ; buttons : IGamepadButton [ ] ; axes : number [ ] ; connected : boolean ; timestamp : number ; mapping : string ; vibrationActuator ? : IGamepadHapticActuator ; } export interface IGamepadHapticActuator { type : string ; playEffect ( type , params ) : Promise < any > ; } export interface IGamepadEffectParameters { duration ? : number ; startDelay ? : number ; strongMagnitude ? : number ; weakMagnitude ? : number ; }