# 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.globalization
import winrt.windows.networking.sockets
import winrt.windows.security.credentials
import winrt.windows.security.cryptography.certificates

from winrt.windows.devices.alljoyn import AllJoynAuthenticationMechanism, AllJoynBusAttachmentState, AllJoynSessionLostReason, AllJoynTrafficType

Self = typing.TypeVar('Self')

@typing.final
class AllJoynAboutData(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AllJoynAboutData: ...
    @_property
    def default_description(self) -> str: ...
    @default_description.setter
    def default_description(self, value: str) -> None: ...
    @_property
    def default_app_name(self) -> str: ...
    @default_app_name.setter
    def default_app_name(self, value: str) -> None: ...
    @_property
    def date_of_manufacture(self) -> typing.Optional[typing.Optional[datetime.datetime]]: ...
    @date_of_manufacture.setter
    def date_of_manufacture(self, value: typing.Optional[typing.Optional[datetime.datetime]]) -> None: ...
    @_property
    def default_manufacturer(self) -> str: ...
    @default_manufacturer.setter
    def default_manufacturer(self, value: str) -> None: ...
    @_property
    def app_id(self) -> _uuid.UUID: ...
    @app_id.setter
    def app_id(self, value: _uuid.UUID) -> None: ...
    @_property
    def support_url(self) -> typing.Optional[winrt.windows.foundation.Uri]: ...
    @support_url.setter
    def support_url(self, value: typing.Optional[winrt.windows.foundation.Uri]) -> None: ...
    @_property
    def software_version(self) -> str: ...
    @software_version.setter
    def software_version(self, value: str) -> None: ...
    @_property
    def model_number(self) -> str: ...
    @model_number.setter
    def model_number(self, value: str) -> None: ...
    @_property
    def is_enabled(self) -> bool: ...
    @is_enabled.setter
    def is_enabled(self, value: bool) -> None: ...
    @_property
    def app_names(self) -> typing.Optional[winrt.windows.foundation.collections.IMap[str, str]]: ...
    @_property
    def manufacturers(self) -> typing.Optional[winrt.windows.foundation.collections.IMap[str, str]]: ...
    @_property
    def descriptions(self) -> typing.Optional[winrt.windows.foundation.collections.IMap[str, str]]: ...

@typing.final
class AllJoynAboutDataView_Static(type):
    @typing.overload
    def get_data_by_session_port_async(cls, unique_name: str, bus_attachment: typing.Optional[AllJoynBusAttachment], session_port: winrt.system.UInt16, /) -> winrt.windows.foundation.IAsyncOperation[AllJoynAboutDataView]: ...
    @typing.overload
    def get_data_by_session_port_async(cls, unique_name: str, bus_attachment: typing.Optional[AllJoynBusAttachment], session_port: winrt.system.UInt16, language: typing.Optional[winrt.windows.globalization.Language], /) -> winrt.windows.foundation.IAsyncOperation[AllJoynAboutDataView]: ...

@typing.final
class AllJoynAboutDataView(winrt.system.Object, metaclass=AllJoynAboutDataView_Static):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AllJoynAboutDataView: ...
    @_property
    def a_j_software_version(self) -> str: ...
    @_property
    def app_id(self) -> _uuid.UUID: ...
    @_property
    def app_name(self) -> str: ...
    @_property
    def date_of_manufacture(self) -> typing.Optional[typing.Optional[datetime.datetime]]: ...
    @_property
    def default_language(self) -> typing.Optional[winrt.windows.globalization.Language]: ...
    @_property
    def description(self) -> str: ...
    @_property
    def device_id(self) -> str: ...
    @_property
    def device_name(self) -> str: ...
    @_property
    def hardware_version(self) -> str: ...
    @_property
    def manufacturer(self) -> str: ...
    @_property
    def model_number(self) -> str: ...
    @_property
    def properties(self) -> typing.Optional[winrt.windows.foundation.collections.IMapView[str, winrt.system.Object]]: ...
    @_property
    def software_version(self) -> str: ...
    @_property
    def status(self) -> winrt.system.Int32: ...
    @_property
    def support_url(self) -> typing.Optional[winrt.windows.foundation.Uri]: ...
    @_property
    def supported_languages(self) -> typing.Optional[winrt.windows.foundation.collections.IVectorView[winrt.windows.globalization.Language]]: ...

@typing.final
class AllJoynAcceptSessionJoinerEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AllJoynAcceptSessionJoinerEventArgs: ...
    def __new__(cls: typing.Type[AllJoynAcceptSessionJoinerEventArgs], unique_name: str, session_port: winrt.system.UInt16, traffic_type: AllJoynTrafficType, proximity: winrt.system.UInt8, accept_session_joiner: typing.Optional[IAllJoynAcceptSessionJoiner]) -> AllJoynAcceptSessionJoinerEventArgs:...
    def accept(self) -> None: ...
    @_property
    def same_network(self) -> bool: ...
    @_property
    def same_physical_node(self) -> bool: ...
    @_property
    def session_port(self) -> winrt.system.UInt16: ...
    @_property
    def traffic_type(self) -> AllJoynTrafficType: ...
    @_property
    def unique_name(self) -> str: ...

@typing.final
class AllJoynAuthenticationCompleteEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AllJoynAuthenticationCompleteEventArgs: ...
    @_property
    def authentication_mechanism(self) -> AllJoynAuthenticationMechanism: ...
    @_property
    def peer_unique_name(self) -> str: ...
    @_property
    def succeeded(self) -> bool: ...

@typing.final
class AllJoynBusAttachment_Static(type):
    def get_default(cls) -> typing.Optional[AllJoynBusAttachment]: ...
    def get_watcher(cls, required_interfaces: typing.Iterable[str], /) -> typing.Optional[winrt.windows.devices.enumeration.DeviceWatcher]: ...

@typing.final
class AllJoynBusAttachment(winrt.system.Object, metaclass=AllJoynBusAttachment_Static):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AllJoynBusAttachment: ...
    @typing.overload
    def __new__(cls: typing.Type[AllJoynBusAttachment], connection_specification: str) -> AllJoynBusAttachment:...
    @typing.overload
    def __new__(cls: typing.Type[AllJoynBusAttachment]) -> AllJoynBusAttachment:...
    def connect(self) -> None: ...
    def disconnect(self) -> None: ...
    @typing.overload
    def get_about_data_async(self, service_info: typing.Optional[AllJoynServiceInfo], /) -> winrt.windows.foundation.IAsyncOperation[AllJoynAboutDataView]: ...
    @typing.overload
    def get_about_data_async(self, service_info: typing.Optional[AllJoynServiceInfo], language: typing.Optional[winrt.windows.globalization.Language], /) -> winrt.windows.foundation.IAsyncOperation[AllJoynAboutDataView]: ...
    def ping_async(self, unique_name: str, /) -> winrt.windows.foundation.IAsyncOperation[winrt.system.Int32]: ...
    def add_authentication_complete(self, handler: winrt.windows.foundation.TypedEventHandler[AllJoynBusAttachment, AllJoynAuthenticationCompleteEventArgs], /) -> winrt.windows.foundation.EventRegistrationToken: ...
    def remove_authentication_complete(self, token: winrt.windows.foundation.EventRegistrationToken, /) -> None: ...
    def add_credentials_requested(self, handler: winrt.windows.foundation.TypedEventHandler[AllJoynBusAttachment, AllJoynCredentialsRequestedEventArgs], /) -> winrt.windows.foundation.EventRegistrationToken: ...
    def remove_credentials_requested(self, token: winrt.windows.foundation.EventRegistrationToken, /) -> None: ...
    def add_credentials_verification_requested(self, handler: winrt.windows.foundation.TypedEventHandler[AllJoynBusAttachment, AllJoynCredentialsVerificationRequestedEventArgs], /) -> winrt.windows.foundation.EventRegistrationToken: ...
    def remove_credentials_verification_requested(self, token: winrt.windows.foundation.EventRegistrationToken, /) -> None: ...
    def add_state_changed(self, handler: winrt.windows.foundation.TypedEventHandler[AllJoynBusAttachment, AllJoynBusAttachmentStateChangedEventArgs], /) -> winrt.windows.foundation.EventRegistrationToken: ...
    def remove_state_changed(self, token: winrt.windows.foundation.EventRegistrationToken, /) -> None: ...
    def add_accept_session_joiner_requested(self, handler: winrt.windows.foundation.TypedEventHandler[AllJoynBusAttachment, AllJoynAcceptSessionJoinerEventArgs], /) -> winrt.windows.foundation.EventRegistrationToken: ...
    def remove_accept_session_joiner_requested(self, token: winrt.windows.foundation.EventRegistrationToken, /) -> None: ...
    def add_session_joined(self, handler: winrt.windows.foundation.TypedEventHandler[AllJoynBusAttachment, AllJoynSessionJoinedEventArgs], /) -> winrt.windows.foundation.EventRegistrationToken: ...
    def remove_session_joined(self, token: winrt.windows.foundation.EventRegistrationToken, /) -> None: ...
    @_property
    def about_data(self) -> typing.Optional[AllJoynAboutData]: ...
    @_property
    def authentication_mechanisms(self) -> typing.Optional[winrt.windows.foundation.collections.IVector[AllJoynAuthenticationMechanism]]: ...
    @_property
    def connection_specification(self) -> str: ...
    @_property
    def state(self) -> AllJoynBusAttachmentState: ...
    @_property
    def unique_name(self) -> str: ...

@typing.final
class AllJoynBusAttachmentStateChangedEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AllJoynBusAttachmentStateChangedEventArgs: ...
    @_property
    def state(self) -> AllJoynBusAttachmentState: ...
    @_property
    def status(self) -> winrt.system.Int32: ...

@typing.final
class AllJoynBusObject(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AllJoynBusObject: ...
    @typing.overload
    def __new__(cls: typing.Type[AllJoynBusObject], object_path: str) -> AllJoynBusObject:...
    @typing.overload
    def __new__(cls: typing.Type[AllJoynBusObject], object_path: str, bus_attachment: typing.Optional[AllJoynBusAttachment]) -> AllJoynBusObject:...
    @typing.overload
    def __new__(cls: typing.Type[AllJoynBusObject]) -> AllJoynBusObject:...
    def add_producer(self, producer: typing.Optional[IAllJoynProducer], /) -> None: ...
    def start(self) -> None: ...
    def stop(self) -> None: ...
    def add_stopped(self, handler: winrt.windows.foundation.TypedEventHandler[AllJoynBusObject, AllJoynBusObjectStoppedEventArgs], /) -> winrt.windows.foundation.EventRegistrationToken: ...
    def remove_stopped(self, token: winrt.windows.foundation.EventRegistrationToken, /) -> None: ...
    @_property
    def bus_attachment(self) -> typing.Optional[AllJoynBusAttachment]: ...
    @_property
    def session(self) -> typing.Optional[AllJoynSession]: ...

@typing.final
class AllJoynBusObjectStoppedEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AllJoynBusObjectStoppedEventArgs: ...
    def __new__(cls: typing.Type[AllJoynBusObjectStoppedEventArgs], status: winrt.system.Int32) -> AllJoynBusObjectStoppedEventArgs:...
    @_property
    def status(self) -> winrt.system.Int32: ...

@typing.final
class AllJoynCredentials(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AllJoynCredentials: ...
    @_property
    def timeout(self) -> datetime.timedelta: ...
    @timeout.setter
    def timeout(self, value: datetime.timedelta) -> None: ...
    @_property
    def password_credential(self) -> typing.Optional[winrt.windows.security.credentials.PasswordCredential]: ...
    @password_credential.setter
    def password_credential(self, value: typing.Optional[winrt.windows.security.credentials.PasswordCredential]) -> None: ...
    @_property
    def certificate(self) -> typing.Optional[winrt.windows.security.cryptography.certificates.Certificate]: ...
    @certificate.setter
    def certificate(self, value: typing.Optional[winrt.windows.security.cryptography.certificates.Certificate]) -> None: ...
    @_property
    def authentication_mechanism(self) -> AllJoynAuthenticationMechanism: ...

@typing.final
class AllJoynCredentialsRequestedEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AllJoynCredentialsRequestedEventArgs: ...
    def get_deferral(self) -> typing.Optional[winrt.windows.foundation.Deferral]: ...
    @_property
    def attempt_count(self) -> winrt.system.UInt16: ...
    @_property
    def credentials(self) -> typing.Optional[AllJoynCredentials]: ...
    @_property
    def peer_unique_name(self) -> str: ...
    @_property
    def requested_user_name(self) -> str: ...

@typing.final
class AllJoynCredentialsVerificationRequestedEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AllJoynCredentialsVerificationRequestedEventArgs: ...
    def accept(self) -> None: ...
    def get_deferral(self) -> typing.Optional[winrt.windows.foundation.Deferral]: ...
    @_property
    def authentication_mechanism(self) -> AllJoynAuthenticationMechanism: ...
    @_property
    def peer_certificate(self) -> typing.Optional[winrt.windows.security.cryptography.certificates.Certificate]: ...
    @_property
    def peer_certificate_error_severity(self) -> winrt.windows.networking.sockets.SocketSslErrorSeverity: ...
    @_property
    def peer_certificate_errors(self) -> typing.Optional[winrt.windows.foundation.collections.IVectorView[winrt.windows.security.cryptography.certificates.ChainValidationResult]]: ...
    @_property
    def peer_intermediate_certificates(self) -> typing.Optional[winrt.windows.foundation.collections.IVectorView[winrt.windows.security.cryptography.certificates.Certificate]]: ...
    @_property
    def peer_unique_name(self) -> str: ...

@typing.final
class AllJoynMessageInfo(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AllJoynMessageInfo: ...
    def __new__(cls: typing.Type[AllJoynMessageInfo], sender_unique_name: str) -> AllJoynMessageInfo:...
    @_property
    def sender_unique_name(self) -> str: ...

@typing.final
class AllJoynProducerStoppedEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AllJoynProducerStoppedEventArgs: ...
    def __new__(cls: typing.Type[AllJoynProducerStoppedEventArgs], status: winrt.system.Int32) -> AllJoynProducerStoppedEventArgs:...
    @_property
    def status(self) -> winrt.system.Int32: ...

@typing.final
class AllJoynServiceInfo_Static(type):
    def from_id_async(cls, device_id: str, /) -> winrt.windows.foundation.IAsyncOperation[AllJoynServiceInfo]: ...

@typing.final
class AllJoynServiceInfo(winrt.system.Object, metaclass=AllJoynServiceInfo_Static):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AllJoynServiceInfo: ...
    def __new__(cls: typing.Type[AllJoynServiceInfo], unique_name: str, object_path: str, session_port: winrt.system.UInt16) -> AllJoynServiceInfo:...
    @_property
    def object_path(self) -> str: ...
    @_property
    def session_port(self) -> winrt.system.UInt16: ...
    @_property
    def unique_name(self) -> str: ...

@typing.final
class AllJoynServiceInfoRemovedEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AllJoynServiceInfoRemovedEventArgs: ...
    def __new__(cls: typing.Type[AllJoynServiceInfoRemovedEventArgs], unique_name: str) -> AllJoynServiceInfoRemovedEventArgs:...
    @_property
    def unique_name(self) -> str: ...

@typing.final
class AllJoynSession_Static(type):
    @typing.overload
    def get_from_service_info_async(cls, service_info: typing.Optional[AllJoynServiceInfo], /) -> winrt.windows.foundation.IAsyncOperation[AllJoynSession]: ...
    @typing.overload
    def get_from_service_info_async(cls, service_info: typing.Optional[AllJoynServiceInfo], bus_attachment: typing.Optional[AllJoynBusAttachment], /) -> winrt.windows.foundation.IAsyncOperation[AllJoynSession]: ...

@typing.final
class AllJoynSession(winrt.system.Object, metaclass=AllJoynSession_Static):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AllJoynSession: ...
    def remove_member_async(self, unique_name: str, /) -> winrt.windows.foundation.IAsyncOperation[winrt.system.Int32]: ...
    def add_lost(self, handler: winrt.windows.foundation.TypedEventHandler[AllJoynSession, AllJoynSessionLostEventArgs], /) -> winrt.windows.foundation.EventRegistrationToken: ...
    def remove_lost(self, token: winrt.windows.foundation.EventRegistrationToken, /) -> None: ...
    def add_member_added(self, handler: winrt.windows.foundation.TypedEventHandler[AllJoynSession, AllJoynSessionMemberAddedEventArgs], /) -> winrt.windows.foundation.EventRegistrationToken: ...
    def remove_member_added(self, token: winrt.windows.foundation.EventRegistrationToken, /) -> None: ...
    def add_member_removed(self, handler: winrt.windows.foundation.TypedEventHandler[AllJoynSession, AllJoynSessionMemberRemovedEventArgs], /) -> winrt.windows.foundation.EventRegistrationToken: ...
    def remove_member_removed(self, token: winrt.windows.foundation.EventRegistrationToken, /) -> None: ...
    @_property
    def id(self) -> winrt.system.Int32: ...
    @_property
    def status(self) -> winrt.system.Int32: ...

@typing.final
class AllJoynSessionJoinedEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AllJoynSessionJoinedEventArgs: ...
    def __new__(cls: typing.Type[AllJoynSessionJoinedEventArgs], session: typing.Optional[AllJoynSession]) -> AllJoynSessionJoinedEventArgs:...
    @_property
    def session(self) -> typing.Optional[AllJoynSession]: ...

@typing.final
class AllJoynSessionLostEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AllJoynSessionLostEventArgs: ...
    def __new__(cls: typing.Type[AllJoynSessionLostEventArgs], reason: AllJoynSessionLostReason) -> AllJoynSessionLostEventArgs:...
    @_property
    def reason(self) -> AllJoynSessionLostReason: ...

@typing.final
class AllJoynSessionMemberAddedEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AllJoynSessionMemberAddedEventArgs: ...
    def __new__(cls: typing.Type[AllJoynSessionMemberAddedEventArgs], unique_name: str) -> AllJoynSessionMemberAddedEventArgs:...
    @_property
    def unique_name(self) -> str: ...

@typing.final
class AllJoynSessionMemberRemovedEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AllJoynSessionMemberRemovedEventArgs: ...
    def __new__(cls: typing.Type[AllJoynSessionMemberRemovedEventArgs], unique_name: str) -> AllJoynSessionMemberRemovedEventArgs:...
    @_property
    def unique_name(self) -> str: ...

@typing.final
class AllJoynStatus_Static(type):
    @_property
    def authentication_failed(cls) -> winrt.system.Int32: ...
    @_property
    def authentication_rejected_by_user(cls) -> winrt.system.Int32: ...
    @_property
    def connection_refused(cls) -> winrt.system.Int32: ...
    @_property
    def fail(cls) -> winrt.system.Int32: ...
    @_property
    def insufficient_security(cls) -> winrt.system.Int32: ...
    @_property
    def invalid_argument1(cls) -> winrt.system.Int32: ...
    @_property
    def invalid_argument2(cls) -> winrt.system.Int32: ...
    @_property
    def invalid_argument3(cls) -> winrt.system.Int32: ...
    @_property
    def invalid_argument4(cls) -> winrt.system.Int32: ...
    @_property
    def invalid_argument5(cls) -> winrt.system.Int32: ...
    @_property
    def invalid_argument6(cls) -> winrt.system.Int32: ...
    @_property
    def invalid_argument7(cls) -> winrt.system.Int32: ...
    @_property
    def invalid_argument8(cls) -> winrt.system.Int32: ...
    @_property
    def ok(cls) -> winrt.system.Int32: ...
    @_property
    def operation_timed_out(cls) -> winrt.system.Int32: ...
    @_property
    def other_end_closed(cls) -> winrt.system.Int32: ...
    @_property
    def ssl_connect_failed(cls) -> winrt.system.Int32: ...
    @_property
    def ssl_identity_verification_failed(cls) -> winrt.system.Int32: ...

@typing.final
class AllJoynStatus(winrt.system.Object, metaclass=AllJoynStatus_Static):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AllJoynStatus: ...

@typing.final
class AllJoynWatcherStoppedEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AllJoynWatcherStoppedEventArgs: ...
    def __new__(cls: typing.Type[AllJoynWatcherStoppedEventArgs], status: winrt.system.Int32) -> AllJoynWatcherStoppedEventArgs:...
    @_property
    def status(self) -> winrt.system.Int32: ...

@typing.final
class IAllJoynAcceptSessionJoiner(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> IAllJoynAcceptSessionJoiner: ...
    def accept(self) -> None: ...

@typing.final
class IAllJoynProducer(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> IAllJoynProducer: ...
    def set_bus_object(self, bus_object: typing.Optional[AllJoynBusObject], /) -> None: ...

