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

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

import winrt._winrt
import winrt.system
import winrt.windows.devices.enumeration
import winrt.windows.foundation
import winrt.windows.foundation.collections
import winrt.windows.storage.streams
import winrt.windows.ui.popups

from winrt.windows.media.dialprotocol import DialAppLaunchResult, DialAppState, DialAppStopResult, DialDeviceDisplayStatus

Self = typing.TypeVar('Self')

@typing.final
class DialApp(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> DialApp: ...
    def get_app_state_async(self) -> winrt.windows.foundation.IAsyncOperation[DialAppStateDetails]: ...
    def request_launch_async(self, app_argument: str, /) -> winrt.windows.foundation.IAsyncOperation[DialAppLaunchResult]: ...
    def stop_async(self) -> winrt.windows.foundation.IAsyncOperation[DialAppStopResult]: ...
    @_property
    def app_name(self) -> str: ...

@typing.final
class DialAppStateDetails(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> DialAppStateDetails: ...
    @_property
    def full_xml(self) -> str: ...
    @_property
    def state(self) -> DialAppState: ...

@typing.final
class DialDevice_Static(type):
    def device_info_supports_dial_async(cls, device: typing.Optional[winrt.windows.devices.enumeration.DeviceInformation], /) -> winrt.windows.foundation.IAsyncOperation[bool]: ...
    def from_id_async(cls, value: str, /) -> winrt.windows.foundation.IAsyncOperation[DialDevice]: ...
    def get_device_selector(cls, app_name: str, /) -> str: ...

@typing.final
class DialDevice(winrt.system.Object, metaclass=DialDevice_Static):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> DialDevice: ...
    def get_dial_app(self, app_name: str, /) -> typing.Optional[DialApp]: ...
    @_property
    def id(self) -> str: ...
    @_property
    def friendly_name(self) -> str: ...
    @_property
    def thumbnail(self) -> typing.Optional[winrt.windows.storage.streams.IRandomAccessStreamReference]: ...

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

@typing.final
class DialDevicePickerFilter(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> DialDevicePickerFilter: ...
    @_property
    def supported_app_names(self) -> typing.Optional[winrt.windows.foundation.collections.IVector[str]]: ...

@typing.final
class DialDeviceSelectedEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> DialDeviceSelectedEventArgs: ...
    @_property
    def selected_dial_device(self) -> typing.Optional[DialDevice]: ...

@typing.final
class DialDisconnectButtonClickedEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> DialDisconnectButtonClickedEventArgs: ...
    @_property
    def device(self) -> typing.Optional[DialDevice]: ...

@typing.final
class DialReceiverApp_Static(type):
    @_property
    def current(cls) -> typing.Optional[DialReceiverApp]: ...

@typing.final
class DialReceiverApp(winrt.system.Object, metaclass=DialReceiverApp_Static):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> DialReceiverApp: ...
    def get_additional_data_async(self) -> winrt.windows.foundation.IAsyncOperation[winrt.windows.foundation.collections.IMap[str, str]]: ...
    def get_unique_device_name_async(self) -> winrt.windows.foundation.IAsyncOperation[str]: ...
    def set_additional_data_async(self, additional_data: typing.Iterable[winrt.windows.foundation.collections.IKeyValuePair[str, str]], /) -> winrt.windows.foundation.IAsyncAction: ...

