# WARNING: Please don't edit this file. It was generated by Python/WinRT v1.0.0-beta.2

import enum
import sys
import types
import typing
import uuid

import winsdk._winrt as _winrt

try:
    import winsdk.windows.devices.enumeration
except Exception:
    pass

try:
    import winsdk.windows.foundation
except Exception:
    pass

try:
    import winsdk.windows.foundation.collections
except Exception:
    pass

try:
    import winsdk.windows.storage.streams
except Exception:
    pass

try:
    import winsdk.windows.ui.popups
except Exception:
    pass

class DialAppLaunchResult(enum.IntEnum):
    LAUNCHED = 0
    FAILED_TO_LAUNCH = 1
    NOT_FOUND = 2
    NETWORK_FAILURE = 3

class DialAppState(enum.IntEnum):
    UNKNOWN = 0
    STOPPED = 1
    RUNNING = 2
    NETWORK_FAILURE = 3

class DialAppStopResult(enum.IntEnum):
    STOPPED = 0
    STOP_FAILED = 1
    OPERATION_NOT_SUPPORTED = 2
    NETWORK_FAILURE = 3

class DialDeviceDisplayStatus(enum.IntEnum):
    NONE = 0
    CONNECTING = 1
    CONNECTED = 2
    DISCONNECTING = 3
    DISCONNECTED = 4
    ERROR = 5

class DialApp(_winrt.Object):
    app_name: str
    @staticmethod
    def _from(obj: _winrt.Object) -> DialApp: ...
    @typing.overload
    def get_app_state_async(self) -> winsdk.windows.foundation.IAsyncOperation[DialAppStateDetails]: ...
    @typing.overload
    def request_launch_async(self, app_argument: str) -> winsdk.windows.foundation.IAsyncOperation[DialAppLaunchResult]: ...
    @typing.overload
    def stop_async(self) -> winsdk.windows.foundation.IAsyncOperation[DialAppStopResult]: ...

class DialAppStateDetails(_winrt.Object):
    full_xml: str
    state: DialAppState
    @staticmethod
    def _from(obj: _winrt.Object) -> DialAppStateDetails: ...

class DialDevice(_winrt.Object):
    id: str
    friendly_name: str
    thumbnail: winsdk.windows.storage.streams.IRandomAccessStreamReference
    @staticmethod
    def _from(obj: _winrt.Object) -> DialDevice: ...
    @typing.overload
    @staticmethod
    def device_info_supports_dial_async(device: winsdk.windows.devices.enumeration.DeviceInformation) -> winsdk.windows.foundation.IAsyncOperation[_winrt.Boolean]: ...
    @typing.overload
    @staticmethod
    def from_id_async(value: str) -> winsdk.windows.foundation.IAsyncOperation[DialDevice]: ...
    @typing.overload
    @staticmethod
    def get_device_selector(app_name: str) -> str: ...
    @typing.overload
    def get_dial_app(self, app_name: str) -> DialApp: ...

class DialDevicePicker(_winrt.Object):
    appearance: winsdk.windows.devices.enumeration.DevicePickerAppearance
    filter: DialDevicePickerFilter
    @staticmethod
    def _from(obj: _winrt.Object) -> DialDevicePicker: ...
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def hide(self) -> None: ...
    @typing.overload
    def pick_single_dial_device_async(self, selection: winsdk.windows.foundation.Rect) -> winsdk.windows.foundation.IAsyncOperation[DialDevice]: ...
    @typing.overload
    def pick_single_dial_device_async(self, selection: winsdk.windows.foundation.Rect, preferred_placement: winsdk.windows.ui.popups.Placement) -> winsdk.windows.foundation.IAsyncOperation[DialDevice]: ...
    @typing.overload
    def set_display_status(self, device: DialDevice, status: DialDeviceDisplayStatus) -> None: ...
    @typing.overload
    def show(self, selection: winsdk.windows.foundation.Rect) -> None: ...
    @typing.overload
    def show(self, selection: winsdk.windows.foundation.Rect, preferred_placement: winsdk.windows.ui.popups.Placement) -> None: ...
    @typing.overload
    def add_dial_device_picker_dismissed(self, handler: winsdk.windows.foundation.TypedEventHandler[DialDevicePicker, _winrt.Object]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    @typing.overload
    def remove_dial_device_picker_dismissed(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    @typing.overload
    def add_dial_device_selected(self, handler: winsdk.windows.foundation.TypedEventHandler[DialDevicePicker, DialDeviceSelectedEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    @typing.overload
    def remove_dial_device_selected(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    @typing.overload
    def add_disconnect_button_clicked(self, handler: winsdk.windows.foundation.TypedEventHandler[DialDevicePicker, DialDisconnectButtonClickedEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    @typing.overload
    def remove_disconnect_button_clicked(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...

class DialDevicePickerFilter(_winrt.Object):
    supported_app_names: winsdk.windows.foundation.collections.IVector[str]
    @staticmethod
    def _from(obj: _winrt.Object) -> DialDevicePickerFilter: ...

class DialDeviceSelectedEventArgs(_winrt.Object):
    selected_dial_device: DialDevice
    @staticmethod
    def _from(obj: _winrt.Object) -> DialDeviceSelectedEventArgs: ...

class DialDisconnectButtonClickedEventArgs(_winrt.Object):
    device: DialDevice
    @staticmethod
    def _from(obj: _winrt.Object) -> DialDisconnectButtonClickedEventArgs: ...

class DialReceiverApp(_winrt.Object):
    current: DialReceiverApp
    @staticmethod
    def _from(obj: _winrt.Object) -> DialReceiverApp: ...
    @typing.overload
    def get_additional_data_async(self) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.foundation.collections.IMap[str, str]]: ...
    @typing.overload
    def get_unique_device_name_async(self) -> winsdk.windows.foundation.IAsyncOperation[str]: ...
    @typing.overload
    def set_additional_data_async(self, additional_data: typing.Iterable[winsdk.windows.foundation.collections.IKeyValuePair[str, str]]) -> winsdk.windows.foundation.IAsyncAction: ...

