# WARNING: Please don't edit this file. It was generated by Python/WinRT v3.0.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.applicationmodel.appservice as windows_applicationmodel_appservice
import winrt.windows.foundation as windows_foundation
import winrt.windows.foundation.collections as windows_foundation_collections
import winrt.windows.networking as windows_networking
import winrt.windows.security.credentials as windows_security_credentials
import winrt.windows.system as windows_system

from winrt.windows.system.remotesystems import RemoteSystemAccessStatus, RemoteSystemAuthorizationKind, RemoteSystemDiscoveryType, RemoteSystemPlatform, RemoteSystemSessionCreationStatus, RemoteSystemSessionDisconnectedReason, RemoteSystemSessionJoinStatus, RemoteSystemSessionMessageChannelReliability, RemoteSystemSessionParticipantWatcherStatus, RemoteSystemSessionWatcherStatus, RemoteSystemStatus, RemoteSystemStatusType, RemoteSystemWatcherError

Self = typing.TypeVar('Self')

@typing.final
class KnownRemoteSystemCapabilities_Static(winrt._winrt.IInspectable_Static):
    # System.String Windows.System.RemoteSystems.KnownRemoteSystemCapabilities::get_AppService()
    @_property
    def app_service(cls) -> str: ...
    # System.String Windows.System.RemoteSystems.KnownRemoteSystemCapabilities::get_LaunchUri()
    @_property
    def launch_uri(cls) -> str: ...
    # System.String Windows.System.RemoteSystems.KnownRemoteSystemCapabilities::get_RemoteSession()
    @_property
    def remote_session(cls) -> str: ...
    # System.String Windows.System.RemoteSystems.KnownRemoteSystemCapabilities::get_SpatialEntity()
    @_property
    def spatial_entity(cls) -> str: ...

@typing.final
class KnownRemoteSystemCapabilities(winrt.system.Object, metaclass=KnownRemoteSystemCapabilities_Static):
    pass

@typing.final
class RemoteSystem_Static(winrt._winrt.IInspectable_Static):
    # Windows.System.RemoteSystems.RemoteSystemWatcher Windows.System.RemoteSystems.RemoteSystem::CreateWatcher()
    def create_watcher(cls) -> RemoteSystemWatcher: ...
    # Windows.System.RemoteSystems.RemoteSystemWatcher Windows.System.RemoteSystems.RemoteSystem::CreateWatcherForUser(Windows.System.User)
    def create_watcher_for_user(cls, user: windows_system.User, /) -> RemoteSystemWatcher: ...
    # Windows.System.RemoteSystems.RemoteSystemWatcher Windows.System.RemoteSystems.RemoteSystem::CreateWatcher(Windows.Foundation.Collections.IIterable`1<Windows.System.RemoteSystems.IRemoteSystemFilter>)
    def create_watcher_with_filters(cls, filters: typing.Iterable[IRemoteSystemFilter], /) -> RemoteSystemWatcher: ...
    # Windows.System.RemoteSystems.RemoteSystemWatcher Windows.System.RemoteSystems.RemoteSystem::CreateWatcherForUser(Windows.System.User,Windows.Foundation.Collections.IIterable`1<Windows.System.RemoteSystems.IRemoteSystemFilter>)
    def create_watcher_with_filters_for_user(cls, user: windows_system.User, filters: typing.Iterable[IRemoteSystemFilter], /) -> RemoteSystemWatcher: ...
    # Windows.Foundation.IAsyncOperation`1<Windows.System.RemoteSystems.RemoteSystem> Windows.System.RemoteSystems.RemoteSystem::FindByHostNameAsync(Windows.Networking.HostName)
    def find_by_host_name_async(cls, host_name: windows_networking.HostName, /) -> windows_foundation.IAsyncOperation[RemoteSystem]: ...
    # System.Boolean Windows.System.RemoteSystems.RemoteSystem::IsAuthorizationKindEnabled(Windows.System.RemoteSystems.RemoteSystemAuthorizationKind)
    def is_authorization_kind_enabled(cls, kind: RemoteSystemAuthorizationKind, /) -> bool: ...
    # Windows.Foundation.IAsyncOperation`1<Windows.System.RemoteSystems.RemoteSystemAccessStatus> Windows.System.RemoteSystems.RemoteSystem::RequestAccessAsync()
    def request_access_async(cls) -> windows_foundation.IAsyncOperation[RemoteSystemAccessStatus]: ...

@typing.final
class RemoteSystem(winrt.system.Object, metaclass=RemoteSystem_Static):
    # Windows.Foundation.IAsyncOperation`1<System.Boolean> Windows.System.RemoteSystems.RemoteSystem::GetCapabilitySupportedAsync(System.String)
    def get_capability_supported_async(self, capability_name: str, /) -> windows_foundation.IAsyncOperation[bool]: ...
    # System.String Windows.System.RemoteSystems.RemoteSystem::get_DisplayName()
    @_property
    def display_name(self) -> str: ...
    # System.String Windows.System.RemoteSystems.RemoteSystem::get_Id()
    @_property
    def id(self) -> str: ...
    # System.Boolean Windows.System.RemoteSystems.RemoteSystem::get_IsAvailableByProximity()
    @_property
    def is_available_by_proximity(self) -> bool: ...
    # System.String Windows.System.RemoteSystems.RemoteSystem::get_Kind()
    @_property
    def kind(self) -> str: ...
    # Windows.System.RemoteSystems.RemoteSystemStatus Windows.System.RemoteSystems.RemoteSystem::get_Status()
    @_property
    def status(self) -> RemoteSystemStatus: ...
    # System.Boolean Windows.System.RemoteSystems.RemoteSystem::get_IsAvailableBySpatialProximity()
    @_property
    def is_available_by_spatial_proximity(self) -> bool: ...
    # System.String Windows.System.RemoteSystems.RemoteSystem::get_ManufacturerDisplayName()
    @_property
    def manufacturer_display_name(self) -> str: ...
    # System.String Windows.System.RemoteSystems.RemoteSystem::get_ModelDisplayName()
    @_property
    def model_display_name(self) -> str: ...
    # Windows.System.RemoteSystems.RemoteSystemPlatform Windows.System.RemoteSystems.RemoteSystem::get_Platform()
    @_property
    def platform(self) -> RemoteSystemPlatform: ...
    # Windows.Foundation.Collections.IVectorView`1<Windows.System.RemoteSystems.RemoteSystemApp> Windows.System.RemoteSystems.RemoteSystem::get_Apps()
    @_property
    def apps(self) -> typing.Sequence[RemoteSystemApp]: ...
    # Windows.System.User Windows.System.RemoteSystems.RemoteSystem::get_User()
    @_property
    def user(self) -> windows_system.User: ...

@typing.final
class RemoteSystemAddedEventArgs(winrt.system.Object):
    # Windows.System.RemoteSystems.RemoteSystem Windows.System.RemoteSystems.RemoteSystemAddedEventArgs::get_RemoteSystem()
    @_property
    def remote_system(self) -> RemoteSystem: ...

@typing.final
class RemoteSystemApp(winrt.system.Object):
    # Windows.Foundation.Collections.IMapView`2<System.String,System.String> Windows.System.RemoteSystems.RemoteSystemApp::get_Attributes()
    @_property
    def attributes(self) -> typing.Mapping[str, str]: ...
    # System.String Windows.System.RemoteSystems.RemoteSystemApp::get_DisplayName()
    @_property
    def display_name(self) -> str: ...
    # System.String Windows.System.RemoteSystems.RemoteSystemApp::get_Id()
    @_property
    def id(self) -> str: ...
    # System.Boolean Windows.System.RemoteSystems.RemoteSystemApp::get_IsAvailableByProximity()
    @_property
    def is_available_by_proximity(self) -> bool: ...
    # System.Boolean Windows.System.RemoteSystems.RemoteSystemApp::get_IsAvailableBySpatialProximity()
    @_property
    def is_available_by_spatial_proximity(self) -> bool: ...
    # System.String Windows.System.RemoteSystems.RemoteSystemApp::get_ConnectionToken()
    @_property
    def connection_token(self) -> str: ...
    # Windows.System.User Windows.System.RemoteSystems.RemoteSystemApp::get_User()
    @_property
    def user(self) -> windows_system.User: ...

@typing.final
class RemoteSystemAppRegistration_Static(winrt._winrt.IInspectable_Static):
    # Windows.System.RemoteSystems.RemoteSystemAppRegistration Windows.System.RemoteSystems.RemoteSystemAppRegistration::GetDefault()
    def get_default(cls) -> RemoteSystemAppRegistration: ...
    # Windows.System.RemoteSystems.RemoteSystemAppRegistration Windows.System.RemoteSystems.RemoteSystemAppRegistration::GetForUser(Windows.System.User)
    def get_for_user(cls, user: windows_system.User, /) -> RemoteSystemAppRegistration: ...

@typing.final
class RemoteSystemAppRegistration(winrt.system.Object, metaclass=RemoteSystemAppRegistration_Static):
    # Windows.Foundation.IAsyncOperation`1<System.Boolean> Windows.System.RemoteSystems.RemoteSystemAppRegistration::SaveAsync()
    def save_async(self) -> windows_foundation.IAsyncOperation[bool]: ...
    # Windows.Foundation.Collections.IMap`2<System.String,System.String> Windows.System.RemoteSystems.RemoteSystemAppRegistration::get_Attributes()
    @_property
    def attributes(self) -> typing.MutableMapping[str, str]: ...
    # Windows.System.User Windows.System.RemoteSystems.RemoteSystemAppRegistration::get_User()
    @_property
    def user(self) -> windows_system.User: ...

@typing.final
class RemoteSystemAuthorizationKindFilter(winrt.system.Object, IRemoteSystemFilter):
    def __new__(cls: typing.Type[Self], remote_system_authorization_kind: RemoteSystemAuthorizationKind) -> Self: ...
    # Windows.System.RemoteSystems.RemoteSystemAuthorizationKind Windows.System.RemoteSystems.RemoteSystemAuthorizationKindFilter::get_RemoteSystemAuthorizationKind()
    @_property
    def remote_system_authorization_kind(self) -> RemoteSystemAuthorizationKind: ...

@typing.final
class RemoteSystemConnectionInfo_Static(winrt._winrt.IInspectable_Static):
    # Windows.System.RemoteSystems.RemoteSystemConnectionInfo Windows.System.RemoteSystems.RemoteSystemConnectionInfo::TryCreateFromAppServiceConnection(Windows.ApplicationModel.AppService.AppServiceConnection)
    def try_create_from_app_service_connection(cls, connection: windows_applicationmodel_appservice.AppServiceConnection, /) -> typing.Optional[RemoteSystemConnectionInfo]: ...

@typing.final
class RemoteSystemConnectionInfo(winrt.system.Object, metaclass=RemoteSystemConnectionInfo_Static):
    # System.Boolean Windows.System.RemoteSystems.RemoteSystemConnectionInfo::get_IsProximal()
    @_property
    def is_proximal(self) -> bool: ...

@typing.final
class RemoteSystemConnectionRequest_Static(winrt._winrt.IInspectable_Static):
    # Windows.System.RemoteSystems.RemoteSystemConnectionRequest Windows.System.RemoteSystems.RemoteSystemConnectionRequest::CreateForApp(Windows.System.RemoteSystems.RemoteSystemApp)
    def create_for_app(cls, remote_system_app: RemoteSystemApp, /) -> RemoteSystemConnectionRequest: ...
    # Windows.System.RemoteSystems.RemoteSystemConnectionRequest Windows.System.RemoteSystems.RemoteSystemConnectionRequest::CreateFromConnectionToken(System.String)
    def create_from_connection_token(cls, connection_token: str, /) -> RemoteSystemConnectionRequest: ...
    # Windows.System.RemoteSystems.RemoteSystemConnectionRequest Windows.System.RemoteSystems.RemoteSystemConnectionRequest::CreateFromConnectionTokenForUser(Windows.System.User,System.String)
    def create_from_connection_token_for_user(cls, user: windows_system.User, connection_token: str, /) -> RemoteSystemConnectionRequest: ...

@typing.final
class RemoteSystemConnectionRequest(winrt.system.Object, metaclass=RemoteSystemConnectionRequest_Static):
    def __new__(cls: typing.Type[Self], remote_system: RemoteSystem) -> Self: ...
    # Windows.System.RemoteSystems.RemoteSystem Windows.System.RemoteSystems.RemoteSystemConnectionRequest::get_RemoteSystem()
    @_property
    def remote_system(self) -> RemoteSystem: ...
    # Windows.System.RemoteSystems.RemoteSystemApp Windows.System.RemoteSystems.RemoteSystemConnectionRequest::get_RemoteSystemApp()
    @_property
    def remote_system_app(self) -> RemoteSystemApp: ...
    # System.String Windows.System.RemoteSystems.RemoteSystemConnectionRequest::get_ConnectionToken()
    @_property
    def connection_token(self) -> str: ...

@typing.final
class RemoteSystemDiscoveryTypeFilter(winrt.system.Object, IRemoteSystemFilter):
    def __new__(cls: typing.Type[Self], discovery_type: RemoteSystemDiscoveryType) -> Self: ...
    # Windows.System.RemoteSystems.RemoteSystemDiscoveryType Windows.System.RemoteSystems.RemoteSystemDiscoveryTypeFilter::get_RemoteSystemDiscoveryType()
    @_property
    def remote_system_discovery_type(self) -> RemoteSystemDiscoveryType: ...

@typing.final
class RemoteSystemEnumerationCompletedEventArgs(winrt.system.Object):
    pass

@typing.final
class RemoteSystemKindFilter(winrt.system.Object, IRemoteSystemFilter):
    def __new__(cls: typing.Type[Self], remote_system_kinds: typing.Iterable[str]) -> Self: ...
    # Windows.Foundation.Collections.IVectorView`1<System.String> Windows.System.RemoteSystems.RemoteSystemKindFilter::get_RemoteSystemKinds()
    @_property
    def remote_system_kinds(self) -> typing.Sequence[str]: ...

@typing.final
class RemoteSystemKinds_Static(winrt._winrt.IInspectable_Static):
    # System.String Windows.System.RemoteSystems.RemoteSystemKinds::get_Desktop()
    @_property
    def desktop(cls) -> str: ...
    # System.String Windows.System.RemoteSystems.RemoteSystemKinds::get_Holographic()
    @_property
    def holographic(cls) -> str: ...
    # System.String Windows.System.RemoteSystems.RemoteSystemKinds::get_Hub()
    @_property
    def hub(cls) -> str: ...
    # System.String Windows.System.RemoteSystems.RemoteSystemKinds::get_Phone()
    @_property
    def phone(cls) -> str: ...
    # System.String Windows.System.RemoteSystems.RemoteSystemKinds::get_Xbox()
    @_property
    def xbox(cls) -> str: ...
    # System.String Windows.System.RemoteSystems.RemoteSystemKinds::get_Iot()
    @_property
    def iot(cls) -> str: ...
    # System.String Windows.System.RemoteSystems.RemoteSystemKinds::get_Laptop()
    @_property
    def laptop(cls) -> str: ...
    # System.String Windows.System.RemoteSystems.RemoteSystemKinds::get_Tablet()
    @_property
    def tablet(cls) -> str: ...

@typing.final
class RemoteSystemKinds(winrt.system.Object, metaclass=RemoteSystemKinds_Static):
    pass

@typing.final
class RemoteSystemRemovedEventArgs(winrt.system.Object):
    # System.String Windows.System.RemoteSystems.RemoteSystemRemovedEventArgs::get_RemoteSystemId()
    @_property
    def remote_system_id(self) -> str: ...

@typing.final
class RemoteSystemSession_Static(winrt._winrt.IInspectable_Static):
    # Windows.System.RemoteSystems.RemoteSystemSessionWatcher Windows.System.RemoteSystems.RemoteSystemSession::CreateWatcher()
    def create_watcher(cls) -> RemoteSystemSessionWatcher: ...

@typing.final
class RemoteSystemSession(winrt.system.Object, windows_foundation.IClosable, metaclass=RemoteSystemSession_Static):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, exc_type: typing.Optional[typing.Type[BaseException]], exc_value: typing.Optional[BaseException], traceback: typing.Optional[types.TracebackType]) -> None: ...
    # System.Void Windows.System.RemoteSystems.RemoteSystemSession::Close()
    def close(self) -> None: ...
    # Windows.System.RemoteSystems.RemoteSystemSessionParticipantWatcher Windows.System.RemoteSystems.RemoteSystemSession::CreateParticipantWatcher()
    def create_participant_watcher(self) -> RemoteSystemSessionParticipantWatcher: ...
    # Windows.Foundation.IAsyncOperation`1<System.Boolean> Windows.System.RemoteSystems.RemoteSystemSession::SendInvitationAsync(Windows.System.RemoteSystems.RemoteSystem)
    def send_invitation_async(self, invitee: RemoteSystem, /) -> windows_foundation.IAsyncOperation[bool]: ...
    # Windows.Foundation.EventRegistrationToken Windows.System.RemoteSystems.RemoteSystemSession::add_Disconnected(Windows.Foundation.TypedEventHandler`2<Windows.System.RemoteSystems.RemoteSystemSession,Windows.System.RemoteSystems.RemoteSystemSessionDisconnectedEventArgs>)
    def add_disconnected(self, handler: windows_foundation.TypedEventHandler[RemoteSystemSession, RemoteSystemSessionDisconnectedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.System.RemoteSystems.RemoteSystemSession::remove_Disconnected(Windows.Foundation.EventRegistrationToken)
    def remove_disconnected(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # System.String Windows.System.RemoteSystems.RemoteSystemSession::get_ControllerDisplayName()
    @_property
    def controller_display_name(self) -> str: ...
    # System.String Windows.System.RemoteSystems.RemoteSystemSession::get_DisplayName()
    @_property
    def display_name(self) -> str: ...
    # System.String Windows.System.RemoteSystems.RemoteSystemSession::get_Id()
    @_property
    def id(self) -> str: ...

@typing.final
class RemoteSystemSessionAddedEventArgs(winrt.system.Object):
    # Windows.System.RemoteSystems.RemoteSystemSessionInfo Windows.System.RemoteSystems.RemoteSystemSessionAddedEventArgs::get_SessionInfo()
    @_property
    def session_info(self) -> RemoteSystemSessionInfo: ...

@typing.final
class RemoteSystemSessionController(winrt.system.Object):
    @typing.overload
    def __new__(cls: typing.Type[Self], display_name: str) -> Self: ...
    @typing.overload
    def __new__(cls: typing.Type[Self], display_name: str, options: RemoteSystemSessionOptions) -> Self: ...
    # Windows.Foundation.IAsyncOperation`1<Windows.System.RemoteSystems.RemoteSystemSessionCreationResult> Windows.System.RemoteSystems.RemoteSystemSessionController::CreateSessionAsync()
    def create_session_async(self) -> windows_foundation.IAsyncOperation[RemoteSystemSessionCreationResult]: ...
    # Windows.Foundation.IAsyncOperation`1<System.Boolean> Windows.System.RemoteSystems.RemoteSystemSessionController::RemoveParticipantAsync(Windows.System.RemoteSystems.RemoteSystemSessionParticipant)
    def remove_participant_async(self, p_participant: RemoteSystemSessionParticipant, /) -> windows_foundation.IAsyncOperation[bool]: ...
    # Windows.Foundation.EventRegistrationToken Windows.System.RemoteSystems.RemoteSystemSessionController::add_JoinRequested(Windows.Foundation.TypedEventHandler`2<Windows.System.RemoteSystems.RemoteSystemSessionController,Windows.System.RemoteSystems.RemoteSystemSessionJoinRequestedEventArgs>)
    def add_join_requested(self, handler: windows_foundation.TypedEventHandler[RemoteSystemSessionController, RemoteSystemSessionJoinRequestedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.System.RemoteSystems.RemoteSystemSessionController::remove_JoinRequested(Windows.Foundation.EventRegistrationToken)
    def remove_join_requested(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...

@typing.final
class RemoteSystemSessionCreationResult(winrt.system.Object):
    # Windows.System.RemoteSystems.RemoteSystemSession Windows.System.RemoteSystems.RemoteSystemSessionCreationResult::get_Session()
    @_property
    def session(self) -> RemoteSystemSession: ...
    # Windows.System.RemoteSystems.RemoteSystemSessionCreationStatus Windows.System.RemoteSystems.RemoteSystemSessionCreationResult::get_Status()
    @_property
    def status(self) -> RemoteSystemSessionCreationStatus: ...

@typing.final
class RemoteSystemSessionDisconnectedEventArgs(winrt.system.Object):
    # Windows.System.RemoteSystems.RemoteSystemSessionDisconnectedReason Windows.System.RemoteSystems.RemoteSystemSessionDisconnectedEventArgs::get_Reason()
    @_property
    def reason(self) -> RemoteSystemSessionDisconnectedReason: ...

@typing.final
class RemoteSystemSessionInfo(winrt.system.Object):
    # Windows.Foundation.IAsyncOperation`1<Windows.System.RemoteSystems.RemoteSystemSessionJoinResult> Windows.System.RemoteSystems.RemoteSystemSessionInfo::JoinAsync()
    def join_async(self) -> windows_foundation.IAsyncOperation[RemoteSystemSessionJoinResult]: ...
    # System.String Windows.System.RemoteSystems.RemoteSystemSessionInfo::get_ControllerDisplayName()
    @_property
    def controller_display_name(self) -> str: ...
    # System.String Windows.System.RemoteSystems.RemoteSystemSessionInfo::get_DisplayName()
    @_property
    def display_name(self) -> str: ...

@typing.final
class RemoteSystemSessionInvitation(winrt.system.Object):
    # Windows.System.RemoteSystems.RemoteSystem Windows.System.RemoteSystems.RemoteSystemSessionInvitation::get_Sender()
    @_property
    def sender(self) -> RemoteSystem: ...
    # Windows.System.RemoteSystems.RemoteSystemSessionInfo Windows.System.RemoteSystems.RemoteSystemSessionInvitation::get_SessionInfo()
    @_property
    def session_info(self) -> RemoteSystemSessionInfo: ...

@typing.final
class RemoteSystemSessionInvitationListener(winrt.system.Object):
    def __new__(cls: typing.Type[Self]) -> Self: ...
    # Windows.Foundation.EventRegistrationToken Windows.System.RemoteSystems.RemoteSystemSessionInvitationListener::add_InvitationReceived(Windows.Foundation.TypedEventHandler`2<Windows.System.RemoteSystems.RemoteSystemSessionInvitationListener,Windows.System.RemoteSystems.RemoteSystemSessionInvitationReceivedEventArgs>)
    def add_invitation_received(self, handler: windows_foundation.TypedEventHandler[RemoteSystemSessionInvitationListener, RemoteSystemSessionInvitationReceivedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.System.RemoteSystems.RemoteSystemSessionInvitationListener::remove_InvitationReceived(Windows.Foundation.EventRegistrationToken)
    def remove_invitation_received(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...

@typing.final
class RemoteSystemSessionInvitationReceivedEventArgs(winrt.system.Object):
    # Windows.System.RemoteSystems.RemoteSystemSessionInvitation Windows.System.RemoteSystems.RemoteSystemSessionInvitationReceivedEventArgs::get_Invitation()
    @_property
    def invitation(self) -> RemoteSystemSessionInvitation: ...

@typing.final
class RemoteSystemSessionJoinRequest(winrt.system.Object):
    # System.Void Windows.System.RemoteSystems.RemoteSystemSessionJoinRequest::Accept()
    def accept(self) -> None: ...
    # Windows.System.RemoteSystems.RemoteSystemSessionParticipant Windows.System.RemoteSystems.RemoteSystemSessionJoinRequest::get_Participant()
    @_property
    def participant(self) -> RemoteSystemSessionParticipant: ...

@typing.final
class RemoteSystemSessionJoinRequestedEventArgs(winrt.system.Object):
    # Windows.Foundation.Deferral Windows.System.RemoteSystems.RemoteSystemSessionJoinRequestedEventArgs::GetDeferral()
    def get_deferral(self) -> windows_foundation.Deferral: ...
    # Windows.System.RemoteSystems.RemoteSystemSessionJoinRequest Windows.System.RemoteSystems.RemoteSystemSessionJoinRequestedEventArgs::get_JoinRequest()
    @_property
    def join_request(self) -> RemoteSystemSessionJoinRequest: ...

@typing.final
class RemoteSystemSessionJoinResult(winrt.system.Object):
    # Windows.System.RemoteSystems.RemoteSystemSession Windows.System.RemoteSystems.RemoteSystemSessionJoinResult::get_Session()
    @_property
    def session(self) -> RemoteSystemSession: ...
    # Windows.System.RemoteSystems.RemoteSystemSessionJoinStatus Windows.System.RemoteSystems.RemoteSystemSessionJoinResult::get_Status()
    @_property
    def status(self) -> RemoteSystemSessionJoinStatus: ...

@typing.final
class RemoteSystemSessionMessageChannel(winrt.system.Object):
    @typing.overload
    def __new__(cls: typing.Type[Self], session: RemoteSystemSession, channel_name: str) -> Self: ...
    @typing.overload
    def __new__(cls: typing.Type[Self], session: RemoteSystemSession, channel_name: str, reliability: RemoteSystemSessionMessageChannelReliability) -> Self: ...
    # Windows.Foundation.IAsyncOperation`1<System.Boolean> Windows.System.RemoteSystems.RemoteSystemSessionMessageChannel::BroadcastValueSetAsync(Windows.Foundation.Collections.ValueSet)
    def broadcast_value_set_async(self, message_data: windows_foundation_collections.ValueSet, /) -> windows_foundation.IAsyncOperation[bool]: ...
    # Windows.Foundation.IAsyncOperation`1<System.Boolean> Windows.System.RemoteSystems.RemoteSystemSessionMessageChannel::SendValueSetAsync(Windows.Foundation.Collections.ValueSet,Windows.System.RemoteSystems.RemoteSystemSessionParticipant)
    def send_value_set_async(self, message_data: windows_foundation_collections.ValueSet, participant: RemoteSystemSessionParticipant, /) -> windows_foundation.IAsyncOperation[bool]: ...
    # Windows.Foundation.IAsyncOperation`1<System.Boolean> Windows.System.RemoteSystems.RemoteSystemSessionMessageChannel::SendValueSetToParticipantsAsync(Windows.Foundation.Collections.ValueSet,Windows.Foundation.Collections.IIterable`1<Windows.System.RemoteSystems.RemoteSystemSessionParticipant>)
    def send_value_set_to_participants_async(self, message_data: windows_foundation_collections.ValueSet, participants: typing.Iterable[RemoteSystemSessionParticipant], /) -> windows_foundation.IAsyncOperation[bool]: ...
    # Windows.Foundation.EventRegistrationToken Windows.System.RemoteSystems.RemoteSystemSessionMessageChannel::add_ValueSetReceived(Windows.Foundation.TypedEventHandler`2<Windows.System.RemoteSystems.RemoteSystemSessionMessageChannel,Windows.System.RemoteSystems.RemoteSystemSessionValueSetReceivedEventArgs>)
    def add_value_set_received(self, handler: windows_foundation.TypedEventHandler[RemoteSystemSessionMessageChannel, RemoteSystemSessionValueSetReceivedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.System.RemoteSystems.RemoteSystemSessionMessageChannel::remove_ValueSetReceived(Windows.Foundation.EventRegistrationToken)
    def remove_value_set_received(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.System.RemoteSystems.RemoteSystemSession Windows.System.RemoteSystems.RemoteSystemSessionMessageChannel::get_Session()
    @_property
    def session(self) -> RemoteSystemSession: ...

@typing.final
class RemoteSystemSessionOptions(winrt.system.Object):
    def __new__(cls: typing.Type[Self]) -> Self: ...
    # System.Boolean Windows.System.RemoteSystems.RemoteSystemSessionOptions::get_IsInviteOnly()
    @_property
    def is_invite_only(self) -> bool: ...
    # System.Void Windows.System.RemoteSystems.RemoteSystemSessionOptions::put_IsInviteOnly(System.Boolean)
    @is_invite_only.setter
    def is_invite_only(self, value: bool) -> None: ...

@typing.final
class RemoteSystemSessionParticipant(winrt.system.Object):
    # Windows.Foundation.Collections.IVectorView`1<Windows.Networking.HostName> Windows.System.RemoteSystems.RemoteSystemSessionParticipant::GetHostNames()
    def get_host_names(self) -> typing.Sequence[windows_networking.HostName]: ...
    # Windows.System.RemoteSystems.RemoteSystem Windows.System.RemoteSystems.RemoteSystemSessionParticipant::get_RemoteSystem()
    @_property
    def remote_system(self) -> RemoteSystem: ...

@typing.final
class RemoteSystemSessionParticipantAddedEventArgs(winrt.system.Object):
    # Windows.System.RemoteSystems.RemoteSystemSessionParticipant Windows.System.RemoteSystems.RemoteSystemSessionParticipantAddedEventArgs::get_Participant()
    @_property
    def participant(self) -> RemoteSystemSessionParticipant: ...

@typing.final
class RemoteSystemSessionParticipantRemovedEventArgs(winrt.system.Object):
    # Windows.System.RemoteSystems.RemoteSystemSessionParticipant Windows.System.RemoteSystems.RemoteSystemSessionParticipantRemovedEventArgs::get_Participant()
    @_property
    def participant(self) -> RemoteSystemSessionParticipant: ...

@typing.final
class RemoteSystemSessionParticipantWatcher(winrt.system.Object):
    # System.Void Windows.System.RemoteSystems.RemoteSystemSessionParticipantWatcher::Start()
    def start(self) -> None: ...
    # System.Void Windows.System.RemoteSystems.RemoteSystemSessionParticipantWatcher::Stop()
    def stop(self) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.System.RemoteSystems.RemoteSystemSessionParticipantWatcher::add_Added(Windows.Foundation.TypedEventHandler`2<Windows.System.RemoteSystems.RemoteSystemSessionParticipantWatcher,Windows.System.RemoteSystems.RemoteSystemSessionParticipantAddedEventArgs>)
    def add_added(self, handler: windows_foundation.TypedEventHandler[RemoteSystemSessionParticipantWatcher, RemoteSystemSessionParticipantAddedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.System.RemoteSystems.RemoteSystemSessionParticipantWatcher::remove_Added(Windows.Foundation.EventRegistrationToken)
    def remove_added(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.System.RemoteSystems.RemoteSystemSessionParticipantWatcher::add_EnumerationCompleted(Windows.Foundation.TypedEventHandler`2<Windows.System.RemoteSystems.RemoteSystemSessionParticipantWatcher,System.Object>)
    def add_enumeration_completed(self, handler: windows_foundation.TypedEventHandler[RemoteSystemSessionParticipantWatcher, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.System.RemoteSystems.RemoteSystemSessionParticipantWatcher::remove_EnumerationCompleted(Windows.Foundation.EventRegistrationToken)
    def remove_enumeration_completed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.System.RemoteSystems.RemoteSystemSessionParticipantWatcher::add_Removed(Windows.Foundation.TypedEventHandler`2<Windows.System.RemoteSystems.RemoteSystemSessionParticipantWatcher,Windows.System.RemoteSystems.RemoteSystemSessionParticipantRemovedEventArgs>)
    def add_removed(self, handler: windows_foundation.TypedEventHandler[RemoteSystemSessionParticipantWatcher, RemoteSystemSessionParticipantRemovedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.System.RemoteSystems.RemoteSystemSessionParticipantWatcher::remove_Removed(Windows.Foundation.EventRegistrationToken)
    def remove_removed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.System.RemoteSystems.RemoteSystemSessionParticipantWatcherStatus Windows.System.RemoteSystems.RemoteSystemSessionParticipantWatcher::get_Status()
    @_property
    def status(self) -> RemoteSystemSessionParticipantWatcherStatus: ...

@typing.final
class RemoteSystemSessionRemovedEventArgs(winrt.system.Object):
    # Windows.System.RemoteSystems.RemoteSystemSessionInfo Windows.System.RemoteSystems.RemoteSystemSessionRemovedEventArgs::get_SessionInfo()
    @_property
    def session_info(self) -> RemoteSystemSessionInfo: ...

@typing.final
class RemoteSystemSessionUpdatedEventArgs(winrt.system.Object):
    # Windows.System.RemoteSystems.RemoteSystemSessionInfo Windows.System.RemoteSystems.RemoteSystemSessionUpdatedEventArgs::get_SessionInfo()
    @_property
    def session_info(self) -> RemoteSystemSessionInfo: ...

@typing.final
class RemoteSystemSessionValueSetReceivedEventArgs(winrt.system.Object):
    # Windows.Foundation.Collections.ValueSet Windows.System.RemoteSystems.RemoteSystemSessionValueSetReceivedEventArgs::get_Message()
    @_property
    def message(self) -> windows_foundation_collections.ValueSet: ...
    # Windows.System.RemoteSystems.RemoteSystemSessionParticipant Windows.System.RemoteSystems.RemoteSystemSessionValueSetReceivedEventArgs::get_Sender()
    @_property
    def sender(self) -> RemoteSystemSessionParticipant: ...

@typing.final
class RemoteSystemSessionWatcher(winrt.system.Object):
    # System.Void Windows.System.RemoteSystems.RemoteSystemSessionWatcher::Start()
    def start(self) -> None: ...
    # System.Void Windows.System.RemoteSystems.RemoteSystemSessionWatcher::Stop()
    def stop(self) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.System.RemoteSystems.RemoteSystemSessionWatcher::add_Added(Windows.Foundation.TypedEventHandler`2<Windows.System.RemoteSystems.RemoteSystemSessionWatcher,Windows.System.RemoteSystems.RemoteSystemSessionAddedEventArgs>)
    def add_added(self, handler: windows_foundation.TypedEventHandler[RemoteSystemSessionWatcher, RemoteSystemSessionAddedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.System.RemoteSystems.RemoteSystemSessionWatcher::remove_Added(Windows.Foundation.EventRegistrationToken)
    def remove_added(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.System.RemoteSystems.RemoteSystemSessionWatcher::add_Removed(Windows.Foundation.TypedEventHandler`2<Windows.System.RemoteSystems.RemoteSystemSessionWatcher,Windows.System.RemoteSystems.RemoteSystemSessionRemovedEventArgs>)
    def add_removed(self, handler: windows_foundation.TypedEventHandler[RemoteSystemSessionWatcher, RemoteSystemSessionRemovedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.System.RemoteSystems.RemoteSystemSessionWatcher::remove_Removed(Windows.Foundation.EventRegistrationToken)
    def remove_removed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.System.RemoteSystems.RemoteSystemSessionWatcher::add_Updated(Windows.Foundation.TypedEventHandler`2<Windows.System.RemoteSystems.RemoteSystemSessionWatcher,Windows.System.RemoteSystems.RemoteSystemSessionUpdatedEventArgs>)
    def add_updated(self, handler: windows_foundation.TypedEventHandler[RemoteSystemSessionWatcher, RemoteSystemSessionUpdatedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.System.RemoteSystems.RemoteSystemSessionWatcher::remove_Updated(Windows.Foundation.EventRegistrationToken)
    def remove_updated(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.System.RemoteSystems.RemoteSystemSessionWatcherStatus Windows.System.RemoteSystems.RemoteSystemSessionWatcher::get_Status()
    @_property
    def status(self) -> RemoteSystemSessionWatcherStatus: ...

@typing.final
class RemoteSystemStatusTypeFilter(winrt.system.Object, IRemoteSystemFilter):
    def __new__(cls: typing.Type[Self], remote_system_status_type: RemoteSystemStatusType) -> Self: ...
    # Windows.System.RemoteSystems.RemoteSystemStatusType Windows.System.RemoteSystems.RemoteSystemStatusTypeFilter::get_RemoteSystemStatusType()
    @_property
    def remote_system_status_type(self) -> RemoteSystemStatusType: ...

@typing.final
class RemoteSystemUpdatedEventArgs(winrt.system.Object):
    # Windows.System.RemoteSystems.RemoteSystem Windows.System.RemoteSystems.RemoteSystemUpdatedEventArgs::get_RemoteSystem()
    @_property
    def remote_system(self) -> RemoteSystem: ...

@typing.final
class RemoteSystemWatcher(winrt.system.Object):
    # System.Void Windows.System.RemoteSystems.RemoteSystemWatcher::Start()
    def start(self) -> None: ...
    # System.Void Windows.System.RemoteSystems.RemoteSystemWatcher::Stop()
    def stop(self) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.System.RemoteSystems.RemoteSystemWatcher::add_RemoteSystemAdded(Windows.Foundation.TypedEventHandler`2<Windows.System.RemoteSystems.RemoteSystemWatcher,Windows.System.RemoteSystems.RemoteSystemAddedEventArgs>)
    def add_remote_system_added(self, handler: windows_foundation.TypedEventHandler[RemoteSystemWatcher, RemoteSystemAddedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.System.RemoteSystems.RemoteSystemWatcher::remove_RemoteSystemAdded(Windows.Foundation.EventRegistrationToken)
    def remove_remote_system_added(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.System.RemoteSystems.RemoteSystemWatcher::add_RemoteSystemRemoved(Windows.Foundation.TypedEventHandler`2<Windows.System.RemoteSystems.RemoteSystemWatcher,Windows.System.RemoteSystems.RemoteSystemRemovedEventArgs>)
    def add_remote_system_removed(self, handler: windows_foundation.TypedEventHandler[RemoteSystemWatcher, RemoteSystemRemovedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.System.RemoteSystems.RemoteSystemWatcher::remove_RemoteSystemRemoved(Windows.Foundation.EventRegistrationToken)
    def remove_remote_system_removed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.System.RemoteSystems.RemoteSystemWatcher::add_RemoteSystemUpdated(Windows.Foundation.TypedEventHandler`2<Windows.System.RemoteSystems.RemoteSystemWatcher,Windows.System.RemoteSystems.RemoteSystemUpdatedEventArgs>)
    def add_remote_system_updated(self, handler: windows_foundation.TypedEventHandler[RemoteSystemWatcher, RemoteSystemUpdatedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.System.RemoteSystems.RemoteSystemWatcher::remove_RemoteSystemUpdated(Windows.Foundation.EventRegistrationToken)
    def remove_remote_system_updated(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.System.RemoteSystems.RemoteSystemWatcher::add_EnumerationCompleted(Windows.Foundation.TypedEventHandler`2<Windows.System.RemoteSystems.RemoteSystemWatcher,Windows.System.RemoteSystems.RemoteSystemEnumerationCompletedEventArgs>)
    def add_enumeration_completed(self, handler: windows_foundation.TypedEventHandler[RemoteSystemWatcher, RemoteSystemEnumerationCompletedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.System.RemoteSystems.RemoteSystemWatcher::remove_EnumerationCompleted(Windows.Foundation.EventRegistrationToken)
    def remove_enumeration_completed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.System.RemoteSystems.RemoteSystemWatcher::add_ErrorOccurred(Windows.Foundation.TypedEventHandler`2<Windows.System.RemoteSystems.RemoteSystemWatcher,Windows.System.RemoteSystems.RemoteSystemWatcherErrorOccurredEventArgs>)
    def add_error_occurred(self, handler: windows_foundation.TypedEventHandler[RemoteSystemWatcher, RemoteSystemWatcherErrorOccurredEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.System.RemoteSystems.RemoteSystemWatcher::remove_ErrorOccurred(Windows.Foundation.EventRegistrationToken)
    def remove_error_occurred(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.System.User Windows.System.RemoteSystems.RemoteSystemWatcher::get_User()
    @_property
    def user(self) -> windows_system.User: ...

@typing.final
class RemoteSystemWatcherErrorOccurredEventArgs(winrt.system.Object):
    # Windows.System.RemoteSystems.RemoteSystemWatcherError Windows.System.RemoteSystems.RemoteSystemWatcherErrorOccurredEventArgs::get_Error()
    @_property
    def error(self) -> RemoteSystemWatcherError: ...

@typing.final
class RemoteSystemWebAccountFilter(winrt.system.Object, IRemoteSystemFilter):
    def __new__(cls: typing.Type[Self], account: windows_security_credentials.WebAccount) -> Self: ...
    # Windows.Security.Credentials.WebAccount Windows.System.RemoteSystems.RemoteSystemWebAccountFilter::get_Account()
    @_property
    def account(self) -> windows_security_credentials.WebAccount: ...

@typing.final
class _IRemoteSystemFilter: ...

class IRemoteSystemFilter(winrt._winrt.IInspectable):  # type: ignore[misc]
    pass

