# 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.applicationmodel.appservice
except Exception:
    pass

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

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

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

try:
    import winsdk.windows.security.credentials
except Exception:
    pass

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

class RemoteSystemAccessStatus(enum.IntEnum):
    UNSPECIFIED = 0
    ALLOWED = 1
    DENIED_BY_USER = 2
    DENIED_BY_SYSTEM = 3

class RemoteSystemAuthorizationKind(enum.IntEnum):
    SAME_USER = 0
    ANONYMOUS = 1

class RemoteSystemDiscoveryType(enum.IntEnum):
    ANY = 0
    PROXIMAL = 1
    CLOUD = 2
    SPATIALLY_PROXIMAL = 3

class RemoteSystemPlatform(enum.IntEnum):
    UNKNOWN = 0
    WINDOWS = 1
    ANDROID = 2
    IOS = 3
    LINUX = 4

class RemoteSystemSessionCreationStatus(enum.IntEnum):
    SUCCESS = 0
    SESSION_LIMITS_EXCEEDED = 1
    OPERATION_ABORTED = 2

class RemoteSystemSessionDisconnectedReason(enum.IntEnum):
    SESSION_UNAVAILABLE = 0
    REMOVED_BY_CONTROLLER = 1
    SESSION_CLOSED = 2

class RemoteSystemSessionJoinStatus(enum.IntEnum):
    SUCCESS = 0
    SESSION_LIMITS_EXCEEDED = 1
    OPERATION_ABORTED = 2
    SESSION_UNAVAILABLE = 3
    REJECTED_BY_CONTROLLER = 4

class RemoteSystemSessionMessageChannelReliability(enum.IntEnum):
    RELIABLE = 0
    UNRELIABLE = 1

class RemoteSystemSessionParticipantWatcherStatus(enum.IntEnum):
    CREATED = 0
    STARTED = 1
    ENUMERATION_COMPLETED = 2
    STOPPING = 3
    STOPPED = 4
    ABORTED = 5

class RemoteSystemSessionWatcherStatus(enum.IntEnum):
    CREATED = 0
    STARTED = 1
    ENUMERATION_COMPLETED = 2
    STOPPING = 3
    STOPPED = 4
    ABORTED = 5

class RemoteSystemStatus(enum.IntEnum):
    UNAVAILABLE = 0
    DISCOVERING_AVAILABILITY = 1
    AVAILABLE = 2
    UNKNOWN = 3

class RemoteSystemStatusType(enum.IntEnum):
    ANY = 0
    AVAILABLE = 1

class RemoteSystemWatcherError(enum.IntEnum):
    UNKNOWN = 0
    INTERNET_NOT_AVAILABLE = 1
    AUTHENTICATION_ERROR = 2

class KnownRemoteSystemCapabilities(_winrt.Object):
    app_service: str
    launch_uri: str
    remote_session: str
    spatial_entity: str
    @staticmethod
    def _from(obj: _winrt.Object) -> KnownRemoteSystemCapabilities: ...

class RemoteSystem(_winrt.Object):
    display_name: str
    id: str
    is_available_by_proximity: _winrt.Boolean
    kind: str
    status: RemoteSystemStatus
    is_available_by_spatial_proximity: _winrt.Boolean
    manufacturer_display_name: str
    model_display_name: str
    platform: RemoteSystemPlatform
    apps: winsdk.windows.foundation.collections.IVectorView[RemoteSystemApp]
    user: winsdk.windows.system.User
    @staticmethod
    def _from(obj: _winrt.Object) -> RemoteSystem: ...
    @typing.overload
    @staticmethod
    def create_watcher() -> RemoteSystemWatcher: ...
    @typing.overload
    @staticmethod
    def create_watcher(filters: typing.Iterable[IRemoteSystemFilter]) -> RemoteSystemWatcher: ...
    @typing.overload
    @staticmethod
    def create_watcher_for_user(user: winsdk.windows.system.User) -> RemoteSystemWatcher: ...
    @typing.overload
    @staticmethod
    def create_watcher_for_user(user: winsdk.windows.system.User, filters: typing.Iterable[IRemoteSystemFilter]) -> RemoteSystemWatcher: ...
    @typing.overload
    @staticmethod
    def find_by_host_name_async(host_name: winsdk.windows.networking.HostName) -> winsdk.windows.foundation.IAsyncOperation[RemoteSystem]: ...
    @typing.overload
    def get_capability_supported_async(self, capability_name: str) -> winsdk.windows.foundation.IAsyncOperation[_winrt.Boolean]: ...
    @typing.overload
    @staticmethod
    def is_authorization_kind_enabled(kind: RemoteSystemAuthorizationKind) -> _winrt.Boolean: ...
    @typing.overload
    @staticmethod
    def request_access_async() -> winsdk.windows.foundation.IAsyncOperation[RemoteSystemAccessStatus]: ...

class RemoteSystemAddedEventArgs(_winrt.Object):
    remote_system: RemoteSystem
    @staticmethod
    def _from(obj: _winrt.Object) -> RemoteSystemAddedEventArgs: ...

class RemoteSystemApp(_winrt.Object):
    attributes: winsdk.windows.foundation.collections.IMapView[str, str]
    display_name: str
    id: str
    is_available_by_proximity: _winrt.Boolean
    is_available_by_spatial_proximity: _winrt.Boolean
    connection_token: str
    user: winsdk.windows.system.User
    @staticmethod
    def _from(obj: _winrt.Object) -> RemoteSystemApp: ...

class RemoteSystemAppRegistration(_winrt.Object):
    attributes: winsdk.windows.foundation.collections.IMap[str, str]
    user: winsdk.windows.system.User
    @staticmethod
    def _from(obj: _winrt.Object) -> RemoteSystemAppRegistration: ...
    @typing.overload
    @staticmethod
    def get_default() -> RemoteSystemAppRegistration: ...
    @typing.overload
    @staticmethod
    def get_for_user(user: winsdk.windows.system.User) -> RemoteSystemAppRegistration: ...
    @typing.overload
    def save_async(self) -> winsdk.windows.foundation.IAsyncOperation[_winrt.Boolean]: ...

class RemoteSystemAuthorizationKindFilter(IRemoteSystemFilter, _winrt.Object):
    remote_system_authorization_kind: RemoteSystemAuthorizationKind
    @staticmethod
    def _from(obj: _winrt.Object) -> RemoteSystemAuthorizationKindFilter: ...
    @typing.overload
    def __init__(self, remote_system_authorization_kind: RemoteSystemAuthorizationKind) -> None: ...

class RemoteSystemConnectionInfo(_winrt.Object):
    is_proximal: _winrt.Boolean
    @staticmethod
    def _from(obj: _winrt.Object) -> RemoteSystemConnectionInfo: ...
    @typing.overload
    @staticmethod
    def try_create_from_app_service_connection(connection: winsdk.windows.applicationmodel.appservice.AppServiceConnection) -> RemoteSystemConnectionInfo: ...

class RemoteSystemConnectionRequest(_winrt.Object):
    remote_system: RemoteSystem
    remote_system_app: RemoteSystemApp
    connection_token: str
    @staticmethod
    def _from(obj: _winrt.Object) -> RemoteSystemConnectionRequest: ...
    @typing.overload
    def __init__(self, remote_system: RemoteSystem) -> None: ...
    @typing.overload
    @staticmethod
    def create_for_app(remote_system_app: RemoteSystemApp) -> RemoteSystemConnectionRequest: ...
    @typing.overload
    @staticmethod
    def create_from_connection_token(connection_token: str) -> RemoteSystemConnectionRequest: ...
    @typing.overload
    @staticmethod
    def create_from_connection_token_for_user(user: winsdk.windows.system.User, connection_token: str) -> RemoteSystemConnectionRequest: ...

class RemoteSystemDiscoveryTypeFilter(IRemoteSystemFilter, _winrt.Object):
    remote_system_discovery_type: RemoteSystemDiscoveryType
    @staticmethod
    def _from(obj: _winrt.Object) -> RemoteSystemDiscoveryTypeFilter: ...
    @typing.overload
    def __init__(self, discovery_type: RemoteSystemDiscoveryType) -> None: ...

class RemoteSystemEnumerationCompletedEventArgs(_winrt.Object):
    @staticmethod
    def _from(obj: _winrt.Object) -> RemoteSystemEnumerationCompletedEventArgs: ...

class RemoteSystemKindFilter(IRemoteSystemFilter, _winrt.Object):
    remote_system_kinds: winsdk.windows.foundation.collections.IVectorView[str]
    @staticmethod
    def _from(obj: _winrt.Object) -> RemoteSystemKindFilter: ...
    @typing.overload
    def __init__(self, remote_system_kinds: typing.Iterable[str]) -> None: ...

class RemoteSystemKinds(_winrt.Object):
    desktop: str
    holographic: str
    hub: str
    phone: str
    xbox: str
    iot: str
    laptop: str
    tablet: str
    @staticmethod
    def _from(obj: _winrt.Object) -> RemoteSystemKinds: ...

class RemoteSystemRemovedEventArgs(_winrt.Object):
    remote_system_id: str
    @staticmethod
    def _from(obj: _winrt.Object) -> RemoteSystemRemovedEventArgs: ...

class RemoteSystemSession(winsdk.windows.foundation.IClosable, _winrt.Object):
    controller_display_name: str
    display_name: str
    id: str
    @staticmethod
    def _from(obj: _winrt.Object) -> RemoteSystemSession: ...
    @typing.overload
    def close(self) -> None: ...
    @typing.overload
    def create_participant_watcher(self) -> RemoteSystemSessionParticipantWatcher: ...
    @typing.overload
    @staticmethod
    def create_watcher() -> RemoteSystemSessionWatcher: ...
    @typing.overload
    def send_invitation_async(self, invitee: RemoteSystem) -> winsdk.windows.foundation.IAsyncOperation[_winrt.Boolean]: ...
    @typing.overload
    def add_disconnected(self, handler: winsdk.windows.foundation.TypedEventHandler[RemoteSystemSession, RemoteSystemSessionDisconnectedEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    @typing.overload
    def remove_disconnected(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...

class RemoteSystemSessionAddedEventArgs(_winrt.Object):
    session_info: RemoteSystemSessionInfo
    @staticmethod
    def _from(obj: _winrt.Object) -> RemoteSystemSessionAddedEventArgs: ...

class RemoteSystemSessionController(_winrt.Object):
    @staticmethod
    def _from(obj: _winrt.Object) -> RemoteSystemSessionController: ...
    @typing.overload
    def __init__(self, display_name: str) -> None: ...
    @typing.overload
    def __init__(self, display_name: str, options: RemoteSystemSessionOptions) -> None: ...
    @typing.overload
    def create_session_async(self) -> winsdk.windows.foundation.IAsyncOperation[RemoteSystemSessionCreationResult]: ...
    @typing.overload
    def remove_participant_async(self, p_participant: RemoteSystemSessionParticipant) -> winsdk.windows.foundation.IAsyncOperation[_winrt.Boolean]: ...
    @typing.overload
    def add_join_requested(self, handler: winsdk.windows.foundation.TypedEventHandler[RemoteSystemSessionController, RemoteSystemSessionJoinRequestedEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    @typing.overload
    def remove_join_requested(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...

class RemoteSystemSessionCreationResult(_winrt.Object):
    session: RemoteSystemSession
    status: RemoteSystemSessionCreationStatus
    @staticmethod
    def _from(obj: _winrt.Object) -> RemoteSystemSessionCreationResult: ...

class RemoteSystemSessionDisconnectedEventArgs(_winrt.Object):
    reason: RemoteSystemSessionDisconnectedReason
    @staticmethod
    def _from(obj: _winrt.Object) -> RemoteSystemSessionDisconnectedEventArgs: ...

class RemoteSystemSessionInfo(_winrt.Object):
    controller_display_name: str
    display_name: str
    @staticmethod
    def _from(obj: _winrt.Object) -> RemoteSystemSessionInfo: ...
    @typing.overload
    def join_async(self) -> winsdk.windows.foundation.IAsyncOperation[RemoteSystemSessionJoinResult]: ...

class RemoteSystemSessionInvitation(_winrt.Object):
    sender: RemoteSystem
    session_info: RemoteSystemSessionInfo
    @staticmethod
    def _from(obj: _winrt.Object) -> RemoteSystemSessionInvitation: ...

class RemoteSystemSessionInvitationListener(_winrt.Object):
    @staticmethod
    def _from(obj: _winrt.Object) -> RemoteSystemSessionInvitationListener: ...
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def add_invitation_received(self, handler: winsdk.windows.foundation.TypedEventHandler[RemoteSystemSessionInvitationListener, RemoteSystemSessionInvitationReceivedEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    @typing.overload
    def remove_invitation_received(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...

class RemoteSystemSessionInvitationReceivedEventArgs(_winrt.Object):
    invitation: RemoteSystemSessionInvitation
    @staticmethod
    def _from(obj: _winrt.Object) -> RemoteSystemSessionInvitationReceivedEventArgs: ...

class RemoteSystemSessionJoinRequest(_winrt.Object):
    participant: RemoteSystemSessionParticipant
    @staticmethod
    def _from(obj: _winrt.Object) -> RemoteSystemSessionJoinRequest: ...
    @typing.overload
    def accept(self) -> None: ...

class RemoteSystemSessionJoinRequestedEventArgs(_winrt.Object):
    join_request: RemoteSystemSessionJoinRequest
    @staticmethod
    def _from(obj: _winrt.Object) -> RemoteSystemSessionJoinRequestedEventArgs: ...
    @typing.overload
    def get_deferral(self) -> winsdk.windows.foundation.Deferral: ...

class RemoteSystemSessionJoinResult(_winrt.Object):
    session: RemoteSystemSession
    status: RemoteSystemSessionJoinStatus
    @staticmethod
    def _from(obj: _winrt.Object) -> RemoteSystemSessionJoinResult: ...

class RemoteSystemSessionMessageChannel(_winrt.Object):
    session: RemoteSystemSession
    @staticmethod
    def _from(obj: _winrt.Object) -> RemoteSystemSessionMessageChannel: ...
    @typing.overload
    def __init__(self, session: RemoteSystemSession, channel_name: str) -> None: ...
    @typing.overload
    def __init__(self, session: RemoteSystemSession, channel_name: str, reliability: RemoteSystemSessionMessageChannelReliability) -> None: ...
    @typing.overload
    def broadcast_value_set_async(self, message_data: winsdk.windows.foundation.collections.ValueSet) -> winsdk.windows.foundation.IAsyncOperation[_winrt.Boolean]: ...
    @typing.overload
    def send_value_set_async(self, message_data: winsdk.windows.foundation.collections.ValueSet, participant: RemoteSystemSessionParticipant) -> winsdk.windows.foundation.IAsyncOperation[_winrt.Boolean]: ...
    @typing.overload
    def send_value_set_to_participants_async(self, message_data: winsdk.windows.foundation.collections.ValueSet, participants: typing.Iterable[RemoteSystemSessionParticipant]) -> winsdk.windows.foundation.IAsyncOperation[_winrt.Boolean]: ...
    @typing.overload
    def add_value_set_received(self, handler: winsdk.windows.foundation.TypedEventHandler[RemoteSystemSessionMessageChannel, RemoteSystemSessionValueSetReceivedEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    @typing.overload
    def remove_value_set_received(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...

class RemoteSystemSessionOptions(_winrt.Object):
    is_invite_only: _winrt.Boolean
    @staticmethod
    def _from(obj: _winrt.Object) -> RemoteSystemSessionOptions: ...
    @typing.overload
    def __init__(self) -> None: ...

class RemoteSystemSessionParticipant(_winrt.Object):
    remote_system: RemoteSystem
    @staticmethod
    def _from(obj: _winrt.Object) -> RemoteSystemSessionParticipant: ...
    @typing.overload
    def get_host_names(self) -> winsdk.windows.foundation.collections.IVectorView[winsdk.windows.networking.HostName]: ...

class RemoteSystemSessionParticipantAddedEventArgs(_winrt.Object):
    participant: RemoteSystemSessionParticipant
    @staticmethod
    def _from(obj: _winrt.Object) -> RemoteSystemSessionParticipantAddedEventArgs: ...

class RemoteSystemSessionParticipantRemovedEventArgs(_winrt.Object):
    participant: RemoteSystemSessionParticipant
    @staticmethod
    def _from(obj: _winrt.Object) -> RemoteSystemSessionParticipantRemovedEventArgs: ...

class RemoteSystemSessionParticipantWatcher(_winrt.Object):
    status: RemoteSystemSessionParticipantWatcherStatus
    @staticmethod
    def _from(obj: _winrt.Object) -> RemoteSystemSessionParticipantWatcher: ...
    @typing.overload
    def start(self) -> None: ...
    @typing.overload
    def stop(self) -> None: ...
    @typing.overload
    def add_added(self, handler: winsdk.windows.foundation.TypedEventHandler[RemoteSystemSessionParticipantWatcher, RemoteSystemSessionParticipantAddedEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    @typing.overload
    def remove_added(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    @typing.overload
    def add_enumeration_completed(self, handler: winsdk.windows.foundation.TypedEventHandler[RemoteSystemSessionParticipantWatcher, _winrt.Object]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    @typing.overload
    def remove_enumeration_completed(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    @typing.overload
    def add_removed(self, handler: winsdk.windows.foundation.TypedEventHandler[RemoteSystemSessionParticipantWatcher, RemoteSystemSessionParticipantRemovedEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    @typing.overload
    def remove_removed(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...

class RemoteSystemSessionRemovedEventArgs(_winrt.Object):
    session_info: RemoteSystemSessionInfo
    @staticmethod
    def _from(obj: _winrt.Object) -> RemoteSystemSessionRemovedEventArgs: ...

class RemoteSystemSessionUpdatedEventArgs(_winrt.Object):
    session_info: RemoteSystemSessionInfo
    @staticmethod
    def _from(obj: _winrt.Object) -> RemoteSystemSessionUpdatedEventArgs: ...

class RemoteSystemSessionValueSetReceivedEventArgs(_winrt.Object):
    message: winsdk.windows.foundation.collections.ValueSet
    sender: RemoteSystemSessionParticipant
    @staticmethod
    def _from(obj: _winrt.Object) -> RemoteSystemSessionValueSetReceivedEventArgs: ...

class RemoteSystemSessionWatcher(_winrt.Object):
    status: RemoteSystemSessionWatcherStatus
    @staticmethod
    def _from(obj: _winrt.Object) -> RemoteSystemSessionWatcher: ...
    @typing.overload
    def start(self) -> None: ...
    @typing.overload
    def stop(self) -> None: ...
    @typing.overload
    def add_added(self, handler: winsdk.windows.foundation.TypedEventHandler[RemoteSystemSessionWatcher, RemoteSystemSessionAddedEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    @typing.overload
    def remove_added(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    @typing.overload
    def add_removed(self, handler: winsdk.windows.foundation.TypedEventHandler[RemoteSystemSessionWatcher, RemoteSystemSessionRemovedEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    @typing.overload
    def remove_removed(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    @typing.overload
    def add_updated(self, handler: winsdk.windows.foundation.TypedEventHandler[RemoteSystemSessionWatcher, RemoteSystemSessionUpdatedEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    @typing.overload
    def remove_updated(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...

class RemoteSystemStatusTypeFilter(IRemoteSystemFilter, _winrt.Object):
    remote_system_status_type: RemoteSystemStatusType
    @staticmethod
    def _from(obj: _winrt.Object) -> RemoteSystemStatusTypeFilter: ...
    @typing.overload
    def __init__(self, remote_system_status_type: RemoteSystemStatusType) -> None: ...

class RemoteSystemUpdatedEventArgs(_winrt.Object):
    remote_system: RemoteSystem
    @staticmethod
    def _from(obj: _winrt.Object) -> RemoteSystemUpdatedEventArgs: ...

class RemoteSystemWatcher(_winrt.Object):
    user: winsdk.windows.system.User
    @staticmethod
    def _from(obj: _winrt.Object) -> RemoteSystemWatcher: ...
    @typing.overload
    def start(self) -> None: ...
    @typing.overload
    def stop(self) -> None: ...
    @typing.overload
    def add_remote_system_added(self, handler: winsdk.windows.foundation.TypedEventHandler[RemoteSystemWatcher, RemoteSystemAddedEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    @typing.overload
    def remove_remote_system_added(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    @typing.overload
    def add_remote_system_removed(self, handler: winsdk.windows.foundation.TypedEventHandler[RemoteSystemWatcher, RemoteSystemRemovedEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    @typing.overload
    def remove_remote_system_removed(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    @typing.overload
    def add_remote_system_updated(self, handler: winsdk.windows.foundation.TypedEventHandler[RemoteSystemWatcher, RemoteSystemUpdatedEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    @typing.overload
    def remove_remote_system_updated(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    @typing.overload
    def add_enumeration_completed(self, handler: winsdk.windows.foundation.TypedEventHandler[RemoteSystemWatcher, RemoteSystemEnumerationCompletedEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    @typing.overload
    def remove_enumeration_completed(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...
    @typing.overload
    def add_error_occurred(self, handler: winsdk.windows.foundation.TypedEventHandler[RemoteSystemWatcher, RemoteSystemWatcherErrorOccurredEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    @typing.overload
    def remove_error_occurred(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...

class RemoteSystemWatcherErrorOccurredEventArgs(_winrt.Object):
    error: RemoteSystemWatcherError
    @staticmethod
    def _from(obj: _winrt.Object) -> RemoteSystemWatcherErrorOccurredEventArgs: ...

class RemoteSystemWebAccountFilter(IRemoteSystemFilter, _winrt.Object):
    account: winsdk.windows.security.credentials.WebAccount
    @staticmethod
    def _from(obj: _winrt.Object) -> RemoteSystemWebAccountFilter: ...
    @typing.overload
    def __init__(self, account: winsdk.windows.security.credentials.WebAccount) -> None: ...

class IRemoteSystemFilter(_winrt.Object):
    @staticmethod
    def _from(obj: _winrt.Object) -> IRemoteSystemFilter: ...

