# WARNING: Please don't edit this file. It was generated by Python/WinRT v3.1.0

import datetime
import sys
import types
import typing
import uuid as _uuid
from builtins import property as _property
from abc import abstractmethod

import winrt._winrt
import winrt.system
import winrt.windows.devices.haptics as windows_devices_haptics
import winrt.windows.devices.power as windows_devices_power
import winrt.windows.foundation as windows_foundation
import winrt.windows.foundation.collections as windows_foundation_collections
import winrt.windows.gaming.input.forcefeedback as windows_gaming_input_forcefeedback
import winrt.windows.system as windows_system

from winrt.windows.gaming.input import ArcadeStickButtons, FlightStickButtons, GameControllerButtonLabel, GameControllerSwitchKind, GameControllerSwitchPosition, GamepadButtons, OptionalUINavigationButtons, RacingWheelButtons, RequiredUINavigationButtons

Self = typing.TypeVar('Self')

@typing.final
class ArcadeStickReading:
    @_property
    def timestamp(self) -> winrt.system.UInt64: ...
    @_property
    def buttons(self) -> ArcadeStickButtons: ...
    def __new__(cls, timestamp: winrt.system.UInt64 = 0, buttons: ArcadeStickButtons = ArcadeStickButtons(0)) -> ArcadeStickReading: ...
    def __replace__(self, /, **changes: typing.Any) -> ArcadeStickReading: ...
    def unpack(self) -> typing.Tuple[winrt.system.UInt64, ArcadeStickButtons]: ...

@typing.final
class FlightStickReading:
    @_property
    def timestamp(self) -> winrt.system.UInt64: ...
    @_property
    def buttons(self) -> FlightStickButtons: ...
    @_property
    def hat_switch(self) -> GameControllerSwitchPosition: ...
    @_property
    def roll(self) -> winrt.system.Double: ...
    @_property
    def pitch(self) -> winrt.system.Double: ...
    @_property
    def yaw(self) -> winrt.system.Double: ...
    @_property
    def throttle(self) -> winrt.system.Double: ...
    def __new__(cls, timestamp: winrt.system.UInt64 = 0, buttons: FlightStickButtons = FlightStickButtons(0), hat_switch: GameControllerSwitchPosition = GameControllerSwitchPosition(0), roll: winrt.system.Double = 0, pitch: winrt.system.Double = 0, yaw: winrt.system.Double = 0, throttle: winrt.system.Double = 0) -> FlightStickReading: ...
    def __replace__(self, /, **changes: typing.Any) -> FlightStickReading: ...
    def unpack(self) -> typing.Tuple[winrt.system.UInt64, FlightStickButtons, GameControllerSwitchPosition, winrt.system.Double, winrt.system.Double, winrt.system.Double, winrt.system.Double]: ...

@typing.final
class GamepadReading:
    @_property
    def timestamp(self) -> winrt.system.UInt64: ...
    @_property
    def buttons(self) -> GamepadButtons: ...
    @_property
    def left_trigger(self) -> winrt.system.Double: ...
    @_property
    def right_trigger(self) -> winrt.system.Double: ...
    @_property
    def left_thumbstick_x(self) -> winrt.system.Double: ...
    @_property
    def left_thumbstick_y(self) -> winrt.system.Double: ...
    @_property
    def right_thumbstick_x(self) -> winrt.system.Double: ...
    @_property
    def right_thumbstick_y(self) -> winrt.system.Double: ...
    def __new__(cls, timestamp: winrt.system.UInt64 = 0, buttons: GamepadButtons = GamepadButtons(0), left_trigger: winrt.system.Double = 0, right_trigger: winrt.system.Double = 0, left_thumbstick_x: winrt.system.Double = 0, left_thumbstick_y: winrt.system.Double = 0, right_thumbstick_x: winrt.system.Double = 0, right_thumbstick_y: winrt.system.Double = 0) -> GamepadReading: ...
    def __replace__(self, /, **changes: typing.Any) -> GamepadReading: ...
    def unpack(self) -> typing.Tuple[winrt.system.UInt64, GamepadButtons, winrt.system.Double, winrt.system.Double, winrt.system.Double, winrt.system.Double, winrt.system.Double, winrt.system.Double]: ...

@typing.final
class GamepadVibration:
    @_property
    def left_motor(self) -> winrt.system.Double: ...
    @_property
    def right_motor(self) -> winrt.system.Double: ...
    @_property
    def left_trigger(self) -> winrt.system.Double: ...
    @_property
    def right_trigger(self) -> winrt.system.Double: ...
    def __new__(cls, left_motor: winrt.system.Double = 0, right_motor: winrt.system.Double = 0, left_trigger: winrt.system.Double = 0, right_trigger: winrt.system.Double = 0) -> GamepadVibration: ...
    def __replace__(self, /, **changes: typing.Any) -> GamepadVibration: ...
    def unpack(self) -> typing.Tuple[winrt.system.Double, winrt.system.Double, winrt.system.Double, winrt.system.Double]: ...

@typing.final
class RacingWheelReading:
    @_property
    def timestamp(self) -> winrt.system.UInt64: ...
    @_property
    def buttons(self) -> RacingWheelButtons: ...
    @_property
    def pattern_shifter_gear(self) -> winrt.system.Int32: ...
    @_property
    def wheel(self) -> winrt.system.Double: ...
    @_property
    def throttle(self) -> winrt.system.Double: ...
    @_property
    def brake(self) -> winrt.system.Double: ...
    @_property
    def clutch(self) -> winrt.system.Double: ...
    @_property
    def handbrake(self) -> winrt.system.Double: ...
    def __new__(cls, timestamp: winrt.system.UInt64 = 0, buttons: RacingWheelButtons = RacingWheelButtons(0), pattern_shifter_gear: winrt.system.Int32 = 0, wheel: winrt.system.Double = 0, throttle: winrt.system.Double = 0, brake: winrt.system.Double = 0, clutch: winrt.system.Double = 0, handbrake: winrt.system.Double = 0) -> RacingWheelReading: ...
    def __replace__(self, /, **changes: typing.Any) -> RacingWheelReading: ...
    def unpack(self) -> typing.Tuple[winrt.system.UInt64, RacingWheelButtons, winrt.system.Int32, winrt.system.Double, winrt.system.Double, winrt.system.Double, winrt.system.Double, winrt.system.Double]: ...

@typing.final
class UINavigationReading:
    @_property
    def timestamp(self) -> winrt.system.UInt64: ...
    @_property
    def required_buttons(self) -> RequiredUINavigationButtons: ...
    @_property
    def optional_buttons(self) -> OptionalUINavigationButtons: ...
    def __new__(cls, timestamp: winrt.system.UInt64 = 0, required_buttons: RequiredUINavigationButtons = RequiredUINavigationButtons(0), optional_buttons: OptionalUINavigationButtons = OptionalUINavigationButtons(0)) -> UINavigationReading: ...
    def __replace__(self, /, **changes: typing.Any) -> UINavigationReading: ...
    def unpack(self) -> typing.Tuple[winrt.system.UInt64, RequiredUINavigationButtons, OptionalUINavigationButtons]: ...

@typing.final
class ArcadeStick_Static(winrt._winrt.IInspectable_Static):
    # Windows.Gaming.Input.ArcadeStick Windows.Gaming.Input.ArcadeStick::FromGameController(Windows.Gaming.Input.IGameController)
    def from_game_controller(cls, game_controller: IGameController, /) -> ArcadeStick: ...
    # Windows.Foundation.EventRegistrationToken Windows.Gaming.Input.ArcadeStick::add_ArcadeStickAdded(Windows.Foundation.EventHandler`1<Windows.Gaming.Input.ArcadeStick>)
    def add_arcade_stick_added(cls, value: windows_foundation.EventHandler[ArcadeStick], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Gaming.Input.ArcadeStick::remove_ArcadeStickAdded(Windows.Foundation.EventRegistrationToken)
    def remove_arcade_stick_added(cls, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Gaming.Input.ArcadeStick::add_ArcadeStickRemoved(Windows.Foundation.EventHandler`1<Windows.Gaming.Input.ArcadeStick>)
    def add_arcade_stick_removed(cls, value: windows_foundation.EventHandler[ArcadeStick], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Gaming.Input.ArcadeStick::remove_ArcadeStickRemoved(Windows.Foundation.EventRegistrationToken)
    def remove_arcade_stick_removed(cls, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.Collections.IVectorView`1<Windows.Gaming.Input.ArcadeStick> Windows.Gaming.Input.ArcadeStick::get_ArcadeSticks()
    @_property
    def arcade_sticks(cls) -> typing.Sequence[ArcadeStick]: ...

@typing.final
class ArcadeStick(winrt.system.Object, IGameControllerBatteryInfo, IGameController, metaclass=ArcadeStick_Static):
    # Windows.Gaming.Input.GameControllerButtonLabel Windows.Gaming.Input.ArcadeStick::GetButtonLabel(Windows.Gaming.Input.ArcadeStickButtons)
    def get_button_label(self, button: ArcadeStickButtons, /) -> GameControllerButtonLabel: ...
    # Windows.Gaming.Input.ArcadeStickReading Windows.Gaming.Input.ArcadeStick::GetCurrentReading()
    def get_current_reading(self) -> ArcadeStickReading: ...
    # Windows.Devices.Power.BatteryReport Windows.Gaming.Input.ArcadeStick::TryGetBatteryReport()
    def try_get_battery_report(self) -> typing.Optional[windows_devices_power.BatteryReport]: ...
    # Windows.Foundation.EventRegistrationToken Windows.Gaming.Input.ArcadeStick::add_HeadsetConnected(Windows.Foundation.TypedEventHandler`2<Windows.Gaming.Input.IGameController,Windows.Gaming.Input.Headset>)
    def add_headset_connected(self, value: windows_foundation.TypedEventHandler[IGameController, Headset], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Gaming.Input.ArcadeStick::remove_HeadsetConnected(Windows.Foundation.EventRegistrationToken)
    def remove_headset_connected(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Gaming.Input.ArcadeStick::add_HeadsetDisconnected(Windows.Foundation.TypedEventHandler`2<Windows.Gaming.Input.IGameController,Windows.Gaming.Input.Headset>)
    def add_headset_disconnected(self, value: windows_foundation.TypedEventHandler[IGameController, Headset], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Gaming.Input.ArcadeStick::remove_HeadsetDisconnected(Windows.Foundation.EventRegistrationToken)
    def remove_headset_disconnected(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Gaming.Input.ArcadeStick::add_UserChanged(Windows.Foundation.TypedEventHandler`2<Windows.Gaming.Input.IGameController,Windows.System.UserChangedEventArgs>)
    def add_user_changed(self, value: windows_foundation.TypedEventHandler[IGameController, windows_system.UserChangedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Gaming.Input.ArcadeStick::remove_UserChanged(Windows.Foundation.EventRegistrationToken)
    def remove_user_changed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Gaming.Input.Headset Windows.Gaming.Input.ArcadeStick::get_Headset()
    @_property
    def headset(self) -> Headset: ...
    # System.Boolean Windows.Gaming.Input.ArcadeStick::get_IsWireless()
    @_property
    def is_wireless(self) -> bool: ...
    # Windows.System.User Windows.Gaming.Input.ArcadeStick::get_User()
    @_property
    def user(self) -> windows_system.User: ...

@typing.final
class FlightStick_Static(winrt._winrt.IInspectable_Static):
    # Windows.Gaming.Input.FlightStick Windows.Gaming.Input.FlightStick::FromGameController(Windows.Gaming.Input.IGameController)
    def from_game_controller(cls, game_controller: IGameController, /) -> FlightStick: ...
    # Windows.Foundation.EventRegistrationToken Windows.Gaming.Input.FlightStick::add_FlightStickAdded(Windows.Foundation.EventHandler`1<Windows.Gaming.Input.FlightStick>)
    def add_flight_stick_added(cls, value: windows_foundation.EventHandler[FlightStick], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Gaming.Input.FlightStick::remove_FlightStickAdded(Windows.Foundation.EventRegistrationToken)
    def remove_flight_stick_added(cls, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Gaming.Input.FlightStick::add_FlightStickRemoved(Windows.Foundation.EventHandler`1<Windows.Gaming.Input.FlightStick>)
    def add_flight_stick_removed(cls, value: windows_foundation.EventHandler[FlightStick], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Gaming.Input.FlightStick::remove_FlightStickRemoved(Windows.Foundation.EventRegistrationToken)
    def remove_flight_stick_removed(cls, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.Collections.IVectorView`1<Windows.Gaming.Input.FlightStick> Windows.Gaming.Input.FlightStick::get_FlightSticks()
    @_property
    def flight_sticks(cls) -> typing.Sequence[FlightStick]: ...

@typing.final
class FlightStick(winrt.system.Object, IGameControllerBatteryInfo, IGameController, metaclass=FlightStick_Static):
    # Windows.Gaming.Input.GameControllerButtonLabel Windows.Gaming.Input.FlightStick::GetButtonLabel(Windows.Gaming.Input.FlightStickButtons)
    def get_button_label(self, button: FlightStickButtons, /) -> GameControllerButtonLabel: ...
    # Windows.Gaming.Input.FlightStickReading Windows.Gaming.Input.FlightStick::GetCurrentReading()
    def get_current_reading(self) -> FlightStickReading: ...
    # Windows.Devices.Power.BatteryReport Windows.Gaming.Input.FlightStick::TryGetBatteryReport()
    def try_get_battery_report(self) -> typing.Optional[windows_devices_power.BatteryReport]: ...
    # Windows.Foundation.EventRegistrationToken Windows.Gaming.Input.FlightStick::add_HeadsetConnected(Windows.Foundation.TypedEventHandler`2<Windows.Gaming.Input.IGameController,Windows.Gaming.Input.Headset>)
    def add_headset_connected(self, value: windows_foundation.TypedEventHandler[IGameController, Headset], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Gaming.Input.FlightStick::remove_HeadsetConnected(Windows.Foundation.EventRegistrationToken)
    def remove_headset_connected(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Gaming.Input.FlightStick::add_HeadsetDisconnected(Windows.Foundation.TypedEventHandler`2<Windows.Gaming.Input.IGameController,Windows.Gaming.Input.Headset>)
    def add_headset_disconnected(self, value: windows_foundation.TypedEventHandler[IGameController, Headset], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Gaming.Input.FlightStick::remove_HeadsetDisconnected(Windows.Foundation.EventRegistrationToken)
    def remove_headset_disconnected(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Gaming.Input.FlightStick::add_UserChanged(Windows.Foundation.TypedEventHandler`2<Windows.Gaming.Input.IGameController,Windows.System.UserChangedEventArgs>)
    def add_user_changed(self, value: windows_foundation.TypedEventHandler[IGameController, windows_system.UserChangedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Gaming.Input.FlightStick::remove_UserChanged(Windows.Foundation.EventRegistrationToken)
    def remove_user_changed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Gaming.Input.GameControllerSwitchKind Windows.Gaming.Input.FlightStick::get_HatSwitchKind()
    @_property
    def hat_switch_kind(self) -> GameControllerSwitchKind: ...
    # Windows.Gaming.Input.Headset Windows.Gaming.Input.FlightStick::get_Headset()
    @_property
    def headset(self) -> Headset: ...
    # System.Boolean Windows.Gaming.Input.FlightStick::get_IsWireless()
    @_property
    def is_wireless(self) -> bool: ...
    # Windows.System.User Windows.Gaming.Input.FlightStick::get_User()
    @_property
    def user(self) -> windows_system.User: ...

@typing.final
class Gamepad_Static(winrt._winrt.IInspectable_Static):
    # Windows.Gaming.Input.Gamepad Windows.Gaming.Input.Gamepad::FromGameController(Windows.Gaming.Input.IGameController)
    def from_game_controller(cls, game_controller: IGameController, /) -> Gamepad: ...
    # Windows.Foundation.EventRegistrationToken Windows.Gaming.Input.Gamepad::add_GamepadAdded(Windows.Foundation.EventHandler`1<Windows.Gaming.Input.Gamepad>)
    def add_gamepad_added(cls, value: windows_foundation.EventHandler[Gamepad], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Gaming.Input.Gamepad::remove_GamepadAdded(Windows.Foundation.EventRegistrationToken)
    def remove_gamepad_added(cls, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Gaming.Input.Gamepad::add_GamepadRemoved(Windows.Foundation.EventHandler`1<Windows.Gaming.Input.Gamepad>)
    def add_gamepad_removed(cls, value: windows_foundation.EventHandler[Gamepad], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Gaming.Input.Gamepad::remove_GamepadRemoved(Windows.Foundation.EventRegistrationToken)
    def remove_gamepad_removed(cls, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.Collections.IVectorView`1<Windows.Gaming.Input.Gamepad> Windows.Gaming.Input.Gamepad::get_Gamepads()
    @_property
    def gamepads(cls) -> typing.Sequence[Gamepad]: ...

@typing.final
class Gamepad(winrt.system.Object, IGameControllerBatteryInfo, IGameController, metaclass=Gamepad_Static):
    # Windows.Gaming.Input.GameControllerButtonLabel Windows.Gaming.Input.Gamepad::GetButtonLabel(Windows.Gaming.Input.GamepadButtons)
    def get_button_label(self, button: GamepadButtons, /) -> GameControllerButtonLabel: ...
    # Windows.Gaming.Input.GamepadReading Windows.Gaming.Input.Gamepad::GetCurrentReading()
    def get_current_reading(self) -> GamepadReading: ...
    # Windows.Devices.Power.BatteryReport Windows.Gaming.Input.Gamepad::TryGetBatteryReport()
    def try_get_battery_report(self) -> typing.Optional[windows_devices_power.BatteryReport]: ...
    # Windows.Foundation.EventRegistrationToken Windows.Gaming.Input.Gamepad::add_HeadsetConnected(Windows.Foundation.TypedEventHandler`2<Windows.Gaming.Input.IGameController,Windows.Gaming.Input.Headset>)
    def add_headset_connected(self, value: windows_foundation.TypedEventHandler[IGameController, Headset], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Gaming.Input.Gamepad::remove_HeadsetConnected(Windows.Foundation.EventRegistrationToken)
    def remove_headset_connected(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Gaming.Input.Gamepad::add_HeadsetDisconnected(Windows.Foundation.TypedEventHandler`2<Windows.Gaming.Input.IGameController,Windows.Gaming.Input.Headset>)
    def add_headset_disconnected(self, value: windows_foundation.TypedEventHandler[IGameController, Headset], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Gaming.Input.Gamepad::remove_HeadsetDisconnected(Windows.Foundation.EventRegistrationToken)
    def remove_headset_disconnected(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Gaming.Input.Gamepad::add_UserChanged(Windows.Foundation.TypedEventHandler`2<Windows.Gaming.Input.IGameController,Windows.System.UserChangedEventArgs>)
    def add_user_changed(self, value: windows_foundation.TypedEventHandler[IGameController, windows_system.UserChangedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Gaming.Input.Gamepad::remove_UserChanged(Windows.Foundation.EventRegistrationToken)
    def remove_user_changed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Gaming.Input.Headset Windows.Gaming.Input.Gamepad::get_Headset()
    @_property
    def headset(self) -> Headset: ...
    # System.Boolean Windows.Gaming.Input.Gamepad::get_IsWireless()
    @_property
    def is_wireless(self) -> bool: ...
    # Windows.System.User Windows.Gaming.Input.Gamepad::get_User()
    @_property
    def user(self) -> windows_system.User: ...
    # Windows.Gaming.Input.GamepadVibration Windows.Gaming.Input.Gamepad::get_Vibration()
    @_property
    def vibration(self) -> GamepadVibration: ...
    # System.Void Windows.Gaming.Input.Gamepad::put_Vibration(Windows.Gaming.Input.GamepadVibration)
    @vibration.setter
    def vibration(self, value: typing.Union[GamepadVibration, typing.Tuple[winrt.system.Double, winrt.system.Double, winrt.system.Double, winrt.system.Double]]) -> None: ...

@typing.final
class Headset(winrt.system.Object, IGameControllerBatteryInfo):
    # Windows.Devices.Power.BatteryReport Windows.Gaming.Input.Headset::TryGetBatteryReport()
    def try_get_battery_report(self) -> typing.Optional[windows_devices_power.BatteryReport]: ...
    # System.String Windows.Gaming.Input.Headset::get_CaptureDeviceId()
    @_property
    def capture_device_id(self) -> str: ...
    # System.String Windows.Gaming.Input.Headset::get_RenderDeviceId()
    @_property
    def render_device_id(self) -> str: ...

@typing.final
class RacingWheel_Static(winrt._winrt.IInspectable_Static):
    # Windows.Gaming.Input.RacingWheel Windows.Gaming.Input.RacingWheel::FromGameController(Windows.Gaming.Input.IGameController)
    def from_game_controller(cls, game_controller: IGameController, /) -> RacingWheel: ...
    # Windows.Foundation.EventRegistrationToken Windows.Gaming.Input.RacingWheel::add_RacingWheelAdded(Windows.Foundation.EventHandler`1<Windows.Gaming.Input.RacingWheel>)
    def add_racing_wheel_added(cls, value: windows_foundation.EventHandler[RacingWheel], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Gaming.Input.RacingWheel::remove_RacingWheelAdded(Windows.Foundation.EventRegistrationToken)
    def remove_racing_wheel_added(cls, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Gaming.Input.RacingWheel::add_RacingWheelRemoved(Windows.Foundation.EventHandler`1<Windows.Gaming.Input.RacingWheel>)
    def add_racing_wheel_removed(cls, value: windows_foundation.EventHandler[RacingWheel], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Gaming.Input.RacingWheel::remove_RacingWheelRemoved(Windows.Foundation.EventRegistrationToken)
    def remove_racing_wheel_removed(cls, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.Collections.IVectorView`1<Windows.Gaming.Input.RacingWheel> Windows.Gaming.Input.RacingWheel::get_RacingWheels()
    @_property
    def racing_wheels(cls) -> typing.Sequence[RacingWheel]: ...

@typing.final
class RacingWheel(winrt.system.Object, IGameControllerBatteryInfo, IGameController, metaclass=RacingWheel_Static):
    # Windows.Gaming.Input.GameControllerButtonLabel Windows.Gaming.Input.RacingWheel::GetButtonLabel(Windows.Gaming.Input.RacingWheelButtons)
    def get_button_label(self, button: RacingWheelButtons, /) -> GameControllerButtonLabel: ...
    # Windows.Gaming.Input.RacingWheelReading Windows.Gaming.Input.RacingWheel::GetCurrentReading()
    def get_current_reading(self) -> RacingWheelReading: ...
    # Windows.Devices.Power.BatteryReport Windows.Gaming.Input.RacingWheel::TryGetBatteryReport()
    def try_get_battery_report(self) -> typing.Optional[windows_devices_power.BatteryReport]: ...
    # Windows.Foundation.EventRegistrationToken Windows.Gaming.Input.RacingWheel::add_HeadsetConnected(Windows.Foundation.TypedEventHandler`2<Windows.Gaming.Input.IGameController,Windows.Gaming.Input.Headset>)
    def add_headset_connected(self, value: windows_foundation.TypedEventHandler[IGameController, Headset], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Gaming.Input.RacingWheel::remove_HeadsetConnected(Windows.Foundation.EventRegistrationToken)
    def remove_headset_connected(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Gaming.Input.RacingWheel::add_HeadsetDisconnected(Windows.Foundation.TypedEventHandler`2<Windows.Gaming.Input.IGameController,Windows.Gaming.Input.Headset>)
    def add_headset_disconnected(self, value: windows_foundation.TypedEventHandler[IGameController, Headset], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Gaming.Input.RacingWheel::remove_HeadsetDisconnected(Windows.Foundation.EventRegistrationToken)
    def remove_headset_disconnected(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Gaming.Input.RacingWheel::add_UserChanged(Windows.Foundation.TypedEventHandler`2<Windows.Gaming.Input.IGameController,Windows.System.UserChangedEventArgs>)
    def add_user_changed(self, value: windows_foundation.TypedEventHandler[IGameController, windows_system.UserChangedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Gaming.Input.RacingWheel::remove_UserChanged(Windows.Foundation.EventRegistrationToken)
    def remove_user_changed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Gaming.Input.Headset Windows.Gaming.Input.RacingWheel::get_Headset()
    @_property
    def headset(self) -> Headset: ...
    # System.Boolean Windows.Gaming.Input.RacingWheel::get_IsWireless()
    @_property
    def is_wireless(self) -> bool: ...
    # Windows.System.User Windows.Gaming.Input.RacingWheel::get_User()
    @_property
    def user(self) -> windows_system.User: ...
    # System.Boolean Windows.Gaming.Input.RacingWheel::get_HasClutch()
    @_property
    def has_clutch(self) -> bool: ...
    # System.Boolean Windows.Gaming.Input.RacingWheel::get_HasHandbrake()
    @_property
    def has_handbrake(self) -> bool: ...
    # System.Boolean Windows.Gaming.Input.RacingWheel::get_HasPatternShifter()
    @_property
    def has_pattern_shifter(self) -> bool: ...
    # System.Int32 Windows.Gaming.Input.RacingWheel::get_MaxPatternShifterGear()
    @_property
    def max_pattern_shifter_gear(self) -> winrt.system.Int32: ...
    # System.Double Windows.Gaming.Input.RacingWheel::get_MaxWheelAngle()
    @_property
    def max_wheel_angle(self) -> winrt.system.Double: ...
    # Windows.Gaming.Input.ForceFeedback.ForceFeedbackMotor Windows.Gaming.Input.RacingWheel::get_WheelMotor()
    @_property
    def wheel_motor(self) -> windows_gaming_input_forcefeedback.ForceFeedbackMotor: ...

@typing.final
class RawGameController_Static(winrt._winrt.IInspectable_Static):
    # Windows.Gaming.Input.RawGameController Windows.Gaming.Input.RawGameController::FromGameController(Windows.Gaming.Input.IGameController)
    def from_game_controller(cls, game_controller: IGameController, /) -> RawGameController: ...
    # Windows.Foundation.EventRegistrationToken Windows.Gaming.Input.RawGameController::add_RawGameControllerAdded(Windows.Foundation.EventHandler`1<Windows.Gaming.Input.RawGameController>)
    def add_raw_game_controller_added(cls, value: windows_foundation.EventHandler[RawGameController], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Gaming.Input.RawGameController::remove_RawGameControllerAdded(Windows.Foundation.EventRegistrationToken)
    def remove_raw_game_controller_added(cls, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Gaming.Input.RawGameController::add_RawGameControllerRemoved(Windows.Foundation.EventHandler`1<Windows.Gaming.Input.RawGameController>)
    def add_raw_game_controller_removed(cls, value: windows_foundation.EventHandler[RawGameController], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Gaming.Input.RawGameController::remove_RawGameControllerRemoved(Windows.Foundation.EventRegistrationToken)
    def remove_raw_game_controller_removed(cls, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.Collections.IVectorView`1<Windows.Gaming.Input.RawGameController> Windows.Gaming.Input.RawGameController::get_RawGameControllers()
    @_property
    def raw_game_controllers(cls) -> typing.Sequence[RawGameController]: ...

@typing.final
class RawGameController(winrt.system.Object, IGameControllerBatteryInfo, IGameController, metaclass=RawGameController_Static):
    # Windows.Gaming.Input.GameControllerButtonLabel Windows.Gaming.Input.RawGameController::GetButtonLabel(System.Int32)
    def get_button_label(self, button_index: winrt.system.Int32, /) -> GameControllerButtonLabel: ...
    # System.UInt64 Windows.Gaming.Input.RawGameController::GetCurrentReading(System.Boolean[],Windows.Gaming.Input.GameControllerSwitchPosition[],System.Double[])
    def get_current_reading(self, button_array: typing.Union[winrt.system.Array[bool], winrt.system.WriteableBuffer], switch_array: typing.Union[winrt.system.Array[GameControllerSwitchPosition], winrt.system.WriteableBuffer], axis_array: typing.Union[winrt.system.Array[winrt.system.Double], winrt.system.WriteableBuffer], /) -> winrt.system.UInt64: ...
    # Windows.Gaming.Input.GameControllerSwitchKind Windows.Gaming.Input.RawGameController::GetSwitchKind(System.Int32)
    def get_switch_kind(self, switch_index: winrt.system.Int32, /) -> GameControllerSwitchKind: ...
    # Windows.Devices.Power.BatteryReport Windows.Gaming.Input.RawGameController::TryGetBatteryReport()
    def try_get_battery_report(self) -> typing.Optional[windows_devices_power.BatteryReport]: ...
    # Windows.Foundation.EventRegistrationToken Windows.Gaming.Input.RawGameController::add_HeadsetConnected(Windows.Foundation.TypedEventHandler`2<Windows.Gaming.Input.IGameController,Windows.Gaming.Input.Headset>)
    def add_headset_connected(self, value: windows_foundation.TypedEventHandler[IGameController, Headset], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Gaming.Input.RawGameController::remove_HeadsetConnected(Windows.Foundation.EventRegistrationToken)
    def remove_headset_connected(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Gaming.Input.RawGameController::add_HeadsetDisconnected(Windows.Foundation.TypedEventHandler`2<Windows.Gaming.Input.IGameController,Windows.Gaming.Input.Headset>)
    def add_headset_disconnected(self, value: windows_foundation.TypedEventHandler[IGameController, Headset], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Gaming.Input.RawGameController::remove_HeadsetDisconnected(Windows.Foundation.EventRegistrationToken)
    def remove_headset_disconnected(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Gaming.Input.RawGameController::add_UserChanged(Windows.Foundation.TypedEventHandler`2<Windows.Gaming.Input.IGameController,Windows.System.UserChangedEventArgs>)
    def add_user_changed(self, value: windows_foundation.TypedEventHandler[IGameController, windows_system.UserChangedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Gaming.Input.RawGameController::remove_UserChanged(Windows.Foundation.EventRegistrationToken)
    def remove_user_changed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Gaming.Input.Headset Windows.Gaming.Input.RawGameController::get_Headset()
    @_property
    def headset(self) -> Headset: ...
    # System.Boolean Windows.Gaming.Input.RawGameController::get_IsWireless()
    @_property
    def is_wireless(self) -> bool: ...
    # Windows.System.User Windows.Gaming.Input.RawGameController::get_User()
    @_property
    def user(self) -> windows_system.User: ...
    # System.Int32 Windows.Gaming.Input.RawGameController::get_AxisCount()
    @_property
    def axis_count(self) -> winrt.system.Int32: ...
    # System.Int32 Windows.Gaming.Input.RawGameController::get_ButtonCount()
    @_property
    def button_count(self) -> winrt.system.Int32: ...
    # Windows.Foundation.Collections.IVectorView`1<Windows.Gaming.Input.ForceFeedback.ForceFeedbackMotor> Windows.Gaming.Input.RawGameController::get_ForceFeedbackMotors()
    @_property
    def force_feedback_motors(self) -> typing.Sequence[windows_gaming_input_forcefeedback.ForceFeedbackMotor]: ...
    # System.UInt16 Windows.Gaming.Input.RawGameController::get_HardwareProductId()
    @_property
    def hardware_product_id(self) -> winrt.system.UInt16: ...
    # System.UInt16 Windows.Gaming.Input.RawGameController::get_HardwareVendorId()
    @_property
    def hardware_vendor_id(self) -> winrt.system.UInt16: ...
    # System.Int32 Windows.Gaming.Input.RawGameController::get_SwitchCount()
    @_property
    def switch_count(self) -> winrt.system.Int32: ...
    # System.String Windows.Gaming.Input.RawGameController::get_DisplayName()
    @_property
    def display_name(self) -> str: ...
    # System.String Windows.Gaming.Input.RawGameController::get_NonRoamableId()
    @_property
    def non_roamable_id(self) -> str: ...
    # Windows.Foundation.Collections.IVectorView`1<Windows.Devices.Haptics.SimpleHapticsController> Windows.Gaming.Input.RawGameController::get_SimpleHapticsControllers()
    @_property
    def simple_haptics_controllers(self) -> typing.Sequence[windows_devices_haptics.SimpleHapticsController]: ...

@typing.final
class UINavigationController_Static(winrt._winrt.IInspectable_Static):
    # Windows.Gaming.Input.UINavigationController Windows.Gaming.Input.UINavigationController::FromGameController(Windows.Gaming.Input.IGameController)
    def from_game_controller(cls, game_controller: IGameController, /) -> UINavigationController: ...
    # Windows.Foundation.EventRegistrationToken Windows.Gaming.Input.UINavigationController::add_UINavigationControllerAdded(Windows.Foundation.EventHandler`1<Windows.Gaming.Input.UINavigationController>)
    def add_ui_navigation_controller_added(cls, value: windows_foundation.EventHandler[UINavigationController], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Gaming.Input.UINavigationController::remove_UINavigationControllerAdded(Windows.Foundation.EventRegistrationToken)
    def remove_ui_navigation_controller_added(cls, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Gaming.Input.UINavigationController::add_UINavigationControllerRemoved(Windows.Foundation.EventHandler`1<Windows.Gaming.Input.UINavigationController>)
    def add_ui_navigation_controller_removed(cls, value: windows_foundation.EventHandler[UINavigationController], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Gaming.Input.UINavigationController::remove_UINavigationControllerRemoved(Windows.Foundation.EventRegistrationToken)
    def remove_ui_navigation_controller_removed(cls, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.Collections.IVectorView`1<Windows.Gaming.Input.UINavigationController> Windows.Gaming.Input.UINavigationController::get_UINavigationControllers()
    @_property
    def ui_navigation_controllers(cls) -> typing.Sequence[UINavigationController]: ...

@typing.final
class UINavigationController(winrt.system.Object, IGameControllerBatteryInfo, IGameController, metaclass=UINavigationController_Static):
    # Windows.Gaming.Input.UINavigationReading Windows.Gaming.Input.UINavigationController::GetCurrentReading()
    def get_current_reading(self) -> UINavigationReading: ...
    # Windows.Gaming.Input.GameControllerButtonLabel Windows.Gaming.Input.UINavigationController::GetOptionalButtonLabel(Windows.Gaming.Input.OptionalUINavigationButtons)
    def get_optional_button_label(self, button: OptionalUINavigationButtons, /) -> GameControllerButtonLabel: ...
    # Windows.Gaming.Input.GameControllerButtonLabel Windows.Gaming.Input.UINavigationController::GetRequiredButtonLabel(Windows.Gaming.Input.RequiredUINavigationButtons)
    def get_required_button_label(self, button: RequiredUINavigationButtons, /) -> GameControllerButtonLabel: ...
    # Windows.Devices.Power.BatteryReport Windows.Gaming.Input.UINavigationController::TryGetBatteryReport()
    def try_get_battery_report(self) -> typing.Optional[windows_devices_power.BatteryReport]: ...
    # Windows.Foundation.EventRegistrationToken Windows.Gaming.Input.UINavigationController::add_HeadsetConnected(Windows.Foundation.TypedEventHandler`2<Windows.Gaming.Input.IGameController,Windows.Gaming.Input.Headset>)
    def add_headset_connected(self, value: windows_foundation.TypedEventHandler[IGameController, Headset], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Gaming.Input.UINavigationController::remove_HeadsetConnected(Windows.Foundation.EventRegistrationToken)
    def remove_headset_connected(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Gaming.Input.UINavigationController::add_HeadsetDisconnected(Windows.Foundation.TypedEventHandler`2<Windows.Gaming.Input.IGameController,Windows.Gaming.Input.Headset>)
    def add_headset_disconnected(self, value: windows_foundation.TypedEventHandler[IGameController, Headset], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Gaming.Input.UINavigationController::remove_HeadsetDisconnected(Windows.Foundation.EventRegistrationToken)
    def remove_headset_disconnected(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Gaming.Input.UINavigationController::add_UserChanged(Windows.Foundation.TypedEventHandler`2<Windows.Gaming.Input.IGameController,Windows.System.UserChangedEventArgs>)
    def add_user_changed(self, value: windows_foundation.TypedEventHandler[IGameController, windows_system.UserChangedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Gaming.Input.UINavigationController::remove_UserChanged(Windows.Foundation.EventRegistrationToken)
    def remove_user_changed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Gaming.Input.Headset Windows.Gaming.Input.UINavigationController::get_Headset()
    @_property
    def headset(self) -> Headset: ...
    # System.Boolean Windows.Gaming.Input.UINavigationController::get_IsWireless()
    @_property
    def is_wireless(self) -> bool: ...
    # Windows.System.User Windows.Gaming.Input.UINavigationController::get_User()
    @_property
    def user(self) -> windows_system.User: ...

@typing.final
class _IGameController: ...

class IGameController(winrt._winrt.IInspectable):
    # Windows.Foundation.EventRegistrationToken Windows.Gaming.Input.IGameController::add_HeadsetConnected(Windows.Foundation.TypedEventHandler`2<Windows.Gaming.Input.IGameController,Windows.Gaming.Input.Headset>)
    @abstractmethod
    def add_headset_connected(self, value: windows_foundation.TypedEventHandler[IGameController, Headset], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Gaming.Input.IGameController::remove_HeadsetConnected(Windows.Foundation.EventRegistrationToken)
    @abstractmethod
    def remove_headset_connected(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Gaming.Input.IGameController::add_HeadsetDisconnected(Windows.Foundation.TypedEventHandler`2<Windows.Gaming.Input.IGameController,Windows.Gaming.Input.Headset>)
    @abstractmethod
    def add_headset_disconnected(self, value: windows_foundation.TypedEventHandler[IGameController, Headset], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Gaming.Input.IGameController::remove_HeadsetDisconnected(Windows.Foundation.EventRegistrationToken)
    @abstractmethod
    def remove_headset_disconnected(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Gaming.Input.IGameController::add_UserChanged(Windows.Foundation.TypedEventHandler`2<Windows.Gaming.Input.IGameController,Windows.System.UserChangedEventArgs>)
    @abstractmethod
    def add_user_changed(self, value: windows_foundation.TypedEventHandler[IGameController, windows_system.UserChangedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Gaming.Input.IGameController::remove_UserChanged(Windows.Foundation.EventRegistrationToken)
    @abstractmethod
    def remove_user_changed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Gaming.Input.Headset Windows.Gaming.Input.IGameController::get_Headset()
    @_property
    @abstractmethod
    def headset(self) -> Headset: ...
    # System.Boolean Windows.Gaming.Input.IGameController::get_IsWireless()
    @_property
    @abstractmethod
    def is_wireless(self) -> bool: ...
    # Windows.System.User Windows.Gaming.Input.IGameController::get_User()
    @_property
    @abstractmethod
    def user(self) -> windows_system.User: ...

@typing.final
class _IGameControllerBatteryInfo: ...

class IGameControllerBatteryInfo(winrt._winrt.IInspectable):
    # Windows.Devices.Power.BatteryReport Windows.Gaming.Input.IGameControllerBatteryInfo::TryGetBatteryReport()
    @abstractmethod
    def try_get_battery_report(self) -> typing.Optional[windows_devices_power.BatteryReport]: ...

