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

import enum
import datetime
import sys
import types
import typing

import winsdk.system
import winsdk.windows.foundation
import winsdk.windows.foundation.collections
import winsdk.windows.media.mediaproperties
import winsdk.windows.security.credentials
import winsdk.windows.storage.streams

class ChatConversationThreadingKind(enum.IntEnum):
    PARTICIPANTS = 0
    CONTACT_ID = 1
    CONVERSATION_ID = 2
    CUSTOM = 3

class ChatItemKind(enum.IntEnum):
    MESSAGE = 0
    CONVERSATION = 1

class ChatMessageChangeType(enum.IntEnum):
    MESSAGE_CREATED = 0
    MESSAGE_MODIFIED = 1
    MESSAGE_DELETED = 2
    CHANGE_TRACKING_LOST = 3

class ChatMessageKind(enum.IntEnum):
    STANDARD = 0
    FILE_TRANSFER_REQUEST = 1
    TRANSPORT_CUSTOM = 2
    JOINED_CONVERSATION = 3
    LEFT_CONVERSATION = 4
    OTHER_PARTICIPANT_JOINED_CONVERSATION = 5
    OTHER_PARTICIPANT_LEFT_CONVERSATION = 6

class ChatMessageOperatorKind(enum.IntEnum):
    UNSPECIFIED = 0
    SMS = 1
    MMS = 2
    RCS = 3

class ChatMessageStatus(enum.IntEnum):
    DRAFT = 0
    SENDING = 1
    SENT = 2
    SEND_RETRY_NEEDED = 3
    SEND_FAILED = 4
    RECEIVED = 5
    RECEIVE_DOWNLOAD_NEEDED = 6
    RECEIVE_DOWNLOAD_FAILED = 7
    RECEIVE_DOWNLOADING = 8
    DELETED = 9
    DECLINED = 10
    CANCELLED = 11
    RECALLED = 12
    RECEIVE_RETRY_NEEDED = 13

class ChatMessageTransportKind(enum.IntEnum):
    TEXT = 0
    UNTRIAGED = 1
    BLOCKED = 2
    CUSTOM = 3

class ChatMessageValidationStatus(enum.IntEnum):
    VALID = 0
    NO_RECIPIENTS = 1
    INVALID_DATA = 2
    MESSAGE_TOO_LARGE = 3
    TOO_MANY_RECIPIENTS = 4
    TRANSPORT_INACTIVE = 5
    TRANSPORT_NOT_FOUND = 6
    TOO_MANY_ATTACHMENTS = 7
    INVALID_RECIPIENTS = 8
    INVALID_BODY = 9
    INVALID_OTHER = 10
    VALID_WITH_LARGE_MESSAGE = 11
    VOICE_ROAMING_RESTRICTION = 12
    DATA_ROAMING_RESTRICTION = 13

class ChatRestoreHistorySpan(enum.IntEnum):
    LAST_MONTH = 0
    LAST_YEAR = 1
    ANY_TIME = 2

class ChatStoreChangedEventKind(enum.IntEnum):
    NOTIFICATIONS_MISSED = 0
    STORE_MODIFIED = 1
    MESSAGE_CREATED = 2
    MESSAGE_MODIFIED = 3
    MESSAGE_DELETED = 4
    CONVERSATION_MODIFIED = 5
    CONVERSATION_DELETED = 6
    CONVERSATION_TRANSPORT_DELETED = 7

class ChatTransportErrorCodeCategory(enum.IntEnum):
    NONE = 0
    HTTP = 1
    NETWORK = 2
    MMS_SERVER = 3

class ChatTransportInterpretedErrorCode(enum.IntEnum):
    NONE = 0
    UNKNOWN = 1
    INVALID_RECIPIENT_ADDRESS = 2
    NETWORK_CONNECTIVITY = 3
    SERVICE_DENIED = 4
    TIMEOUT = 5

class RcsServiceKind(enum.IntEnum):
    CHAT = 0
    GROUP_CHAT = 1
    FILE_TRANSFER = 2
    CAPABILITY = 3

Self = typing.TypeVar('Self')

class ChatCapabilities(winsdk.system.Object):
    is_chat_capable: winsdk.system.Boolean
    is_file_transfer_capable: winsdk.system.Boolean
    is_geo_location_push_capable: winsdk.system.Boolean
    is_integrated_messaging_capable: winsdk.system.Boolean
    is_online: winsdk.system.Boolean
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> ChatCapabilities: ...

class ChatCapabilitiesManager(winsdk.system.Object):
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> ChatCapabilitiesManager: ...
    @typing.overload
    @staticmethod
    def get_cached_capabilities_async(address: str, /) -> winsdk.windows.foundation.IAsyncOperation[ChatCapabilities]: ...
    @typing.overload
    @staticmethod
    def get_cached_capabilities_async(address: str, transport_id: str, /) -> winsdk.windows.foundation.IAsyncOperation[ChatCapabilities]: ...
    @typing.overload
    @staticmethod
    def get_capabilities_from_network_async(address: str, /) -> winsdk.windows.foundation.IAsyncOperation[ChatCapabilities]: ...
    @typing.overload
    @staticmethod
    def get_capabilities_from_network_async(address: str, transport_id: str, /) -> winsdk.windows.foundation.IAsyncOperation[ChatCapabilities]: ...

class ChatConversation(winsdk.system.Object):
    subject: str
    is_conversation_muted: winsdk.system.Boolean
    has_unread_messages: winsdk.system.Boolean
    id: str
    most_recent_message_id: str
    participants: typing.Optional[winsdk.windows.foundation.collections.IVector[str]]
    threading_info: typing.Optional[ChatConversationThreadingInfo]
    can_modify_participants: winsdk.system.Boolean
    item_kind: ChatItemKind
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> ChatConversation: ...
    def delete_async(self) -> winsdk.windows.foundation.IAsyncAction: ...
    def get_message_reader(self) -> typing.Optional[ChatMessageReader]: ...
    @typing.overload
    def mark_messages_as_read_async(self) -> winsdk.windows.foundation.IAsyncAction: ...
    @typing.overload
    def mark_messages_as_read_async(self, value: datetime.datetime, /) -> winsdk.windows.foundation.IAsyncAction: ...
    def notify_local_participant_composing(self, transport_id: str, participant_address: str, is_composing: winsdk.system.Boolean, /) -> None: ...
    def notify_remote_participant_composing(self, transport_id: str, participant_address: str, is_composing: winsdk.system.Boolean, /) -> None: ...
    def save_async(self) -> winsdk.windows.foundation.IAsyncAction: ...
    def add_remote_participant_composing_changed(self, handler: winsdk.windows.foundation.TypedEventHandler[ChatConversation, RemoteParticipantComposingChangedEventArgs], /) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_remote_participant_composing_changed(self, token: winsdk.windows.foundation.EventRegistrationToken, /) -> None: ...

class ChatConversationReader(winsdk.system.Object):
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> ChatConversationReader: ...
    @typing.overload
    def read_batch_async(self) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.foundation.collections.IVectorView[ChatConversation]]: ...
    @typing.overload
    def read_batch_async(self, count: winsdk.system.Int32, /) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.foundation.collections.IVectorView[ChatConversation]]: ...

class ChatConversationThreadingInfo(winsdk.system.Object):
    kind: ChatConversationThreadingKind
    custom: str
    conversation_id: str
    contact_id: str
    participants: typing.Optional[winsdk.windows.foundation.collections.IVector[str]]
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> ChatConversationThreadingInfo: ...
    def __new__(cls: typing.Type[ChatConversationThreadingInfo]) -> ChatConversationThreadingInfo:...

class ChatMessage(winsdk.system.Object):
    item_kind: ChatItemKind
    is_incoming: winsdk.system.Boolean
    is_forwarding_disabled: winsdk.system.Boolean
    transport_id: str
    status: ChatMessageStatus
    from_: str
    body: str
    subject: str
    is_read: winsdk.system.Boolean
    network_timestamp: datetime.datetime
    local_timestamp: datetime.datetime
    recipient_send_statuses: typing.Optional[winsdk.windows.foundation.collections.IMapView[str, ChatMessageStatus]]
    recipients: typing.Optional[winsdk.windows.foundation.collections.IVector[str]]
    transport_friendly_name: str
    attachments: typing.Optional[winsdk.windows.foundation.collections.IVector[ChatMessageAttachment]]
    id: str
    is_seen: winsdk.system.Boolean
    message_kind: ChatMessageKind
    is_received_during_quiet_hours: winsdk.system.Boolean
    is_auto_reply: winsdk.system.Boolean
    estimated_download_size: winsdk.system.UInt64
    threading_info: typing.Optional[ChatConversationThreadingInfo]
    should_suppress_notification: winsdk.system.Boolean
    remote_id: str
    message_operator_kind: ChatMessageOperatorKind
    is_reply_disabled: winsdk.system.Boolean
    is_sim_message: winsdk.system.Boolean
    recipients_delivery_infos: typing.Optional[winsdk.windows.foundation.collections.IVector[ChatRecipientDeliveryInfo]]
    sync_id: str
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> ChatMessage: ...
    def __new__(cls: typing.Type[ChatMessage]) -> ChatMessage:...

class ChatMessageAttachment(winsdk.system.Object):
    text: str
    mime_type: str
    group_id: winsdk.system.UInt32
    data_stream_reference: typing.Optional[winsdk.windows.storage.streams.IRandomAccessStreamReference]
    transfer_progress: winsdk.system.Double
    thumbnail: typing.Optional[winsdk.windows.storage.streams.IRandomAccessStreamReference]
    original_file_name: str
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> ChatMessageAttachment: ...
    def __new__(cls: typing.Type[ChatMessageAttachment], mime_type: str, data_stream_reference: typing.Optional[winsdk.windows.storage.streams.IRandomAccessStreamReference]) -> ChatMessageAttachment:...

class ChatMessageBlocking(winsdk.system.Object):
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> ChatMessageBlocking: ...
    @staticmethod
    def mark_message_as_blocked_async(local_chat_message_id: str, blocked: winsdk.system.Boolean, /) -> winsdk.windows.foundation.IAsyncAction: ...

class ChatMessageChange(winsdk.system.Object):
    change_type: ChatMessageChangeType
    message: typing.Optional[ChatMessage]
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> ChatMessageChange: ...

class ChatMessageChangeReader(winsdk.system.Object):
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> ChatMessageChangeReader: ...
    def accept_changes(self) -> None: ...
    def accept_changes_through(self, last_change_to_acknowledge: typing.Optional[ChatMessageChange], /) -> None: ...
    def read_batch_async(self) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.foundation.collections.IVectorView[ChatMessageChange]]: ...

class ChatMessageChangeTracker(winsdk.system.Object):
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> ChatMessageChangeTracker: ...
    def enable(self) -> None: ...
    def get_change_reader(self) -> typing.Optional[ChatMessageChangeReader]: ...
    def reset(self) -> None: ...

class ChatMessageChangedDeferral(winsdk.system.Object):
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> ChatMessageChangedDeferral: ...
    def complete(self) -> None: ...

class ChatMessageChangedEventArgs(winsdk.system.Object):
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> ChatMessageChangedEventArgs: ...
    def get_deferral(self) -> typing.Optional[ChatMessageChangedDeferral]: ...

class ChatMessageManager(winsdk.system.Object):
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> ChatMessageManager: ...
    @staticmethod
    def get_transport_async(transport_id: str, /) -> winsdk.windows.foundation.IAsyncOperation[ChatMessageTransport]: ...
    @staticmethod
    def get_transports_async() -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.foundation.collections.IVectorView[ChatMessageTransport]]: ...
    @staticmethod
    def register_transport_async() -> winsdk.windows.foundation.IAsyncOperation[str]: ...
    @staticmethod
    def request_store_async() -> winsdk.windows.foundation.IAsyncOperation[ChatMessageStore]: ...
    @staticmethod
    def request_sync_manager_async() -> winsdk.windows.foundation.IAsyncOperation[ChatSyncManager]: ...
    @staticmethod
    def show_compose_sms_message_async(message: typing.Optional[ChatMessage], /) -> winsdk.windows.foundation.IAsyncAction: ...
    @staticmethod
    def show_sms_settings() -> None: ...

class ChatMessageNotificationTriggerDetails(winsdk.system.Object):
    chat_message: typing.Optional[ChatMessage]
    should_display_toast: winsdk.system.Boolean
    should_update_action_center: winsdk.system.Boolean
    should_update_badge: winsdk.system.Boolean
    should_update_detail_text: winsdk.system.Boolean
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> ChatMessageNotificationTriggerDetails: ...

class ChatMessageReader(winsdk.system.Object):
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> ChatMessageReader: ...
    @typing.overload
    def read_batch_async(self) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.foundation.collections.IVectorView[ChatMessage]]: ...
    @typing.overload
    def read_batch_async(self, count: winsdk.system.Int32, /) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.foundation.collections.IVectorView[ChatMessage]]: ...

class ChatMessageStore(winsdk.system.Object):
    change_tracker: typing.Optional[ChatMessageChangeTracker]
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> ChatMessageStore: ...
    def delete_message_async(self, local_message_id: str, /) -> winsdk.windows.foundation.IAsyncAction: ...
    def download_message_async(self, local_chat_message_id: str, /) -> winsdk.windows.foundation.IAsyncAction: ...
    def forward_message_async(self, local_chat_message_id: str, addresses: typing.Iterable[str], /) -> winsdk.windows.foundation.IAsyncOperation[ChatMessage]: ...
    @typing.overload
    def get_conversation_async(self, conversation_id: str, /) -> winsdk.windows.foundation.IAsyncOperation[ChatConversation]: ...
    @typing.overload
    def get_conversation_async(self, conversation_id: str, transport_ids: typing.Iterable[str], /) -> winsdk.windows.foundation.IAsyncOperation[ChatConversation]: ...
    def get_conversation_from_threading_info_async(self, threading_info: typing.Optional[ChatConversationThreadingInfo], /) -> winsdk.windows.foundation.IAsyncOperation[ChatConversation]: ...
    @typing.overload
    def get_conversation_reader(self) -> typing.Optional[ChatConversationReader]: ...
    @typing.overload
    def get_conversation_reader(self, transport_ids: typing.Iterable[str], /) -> typing.Optional[ChatConversationReader]: ...
    def get_message_async(self, local_chat_message_id: str, /) -> winsdk.windows.foundation.IAsyncOperation[ChatMessage]: ...
    def get_message_by_remote_id_async(self, transport_id: str, remote_id: str, /) -> winsdk.windows.foundation.IAsyncOperation[ChatMessage]: ...
    def get_message_by_sync_id_async(self, sync_id: str, /) -> winsdk.windows.foundation.IAsyncOperation[ChatMessage]: ...
    @typing.overload
    def get_message_reader(self) -> typing.Optional[ChatMessageReader]: ...
    @typing.overload
    def get_message_reader(self, recent_time_limit: datetime.timedelta, /) -> typing.Optional[ChatMessageReader]: ...
    def get_search_reader(self, value: typing.Optional[ChatQueryOptions], /) -> typing.Optional[ChatSearchReader]: ...
    @typing.overload
    def get_unseen_count_async(self) -> winsdk.windows.foundation.IAsyncOperation[winsdk.system.Int32]: ...
    @typing.overload
    def get_unseen_count_async(self, transport_ids: typing.Iterable[str], /) -> winsdk.windows.foundation.IAsyncOperation[winsdk.system.Int32]: ...
    @typing.overload
    def mark_as_seen_async(self) -> winsdk.windows.foundation.IAsyncAction: ...
    @typing.overload
    def mark_as_seen_async(self, transport_ids: typing.Iterable[str], /) -> winsdk.windows.foundation.IAsyncAction: ...
    def mark_message_read_async(self, local_chat_message_id: str, /) -> winsdk.windows.foundation.IAsyncAction: ...
    def retry_send_message_async(self, local_chat_message_id: str, /) -> winsdk.windows.foundation.IAsyncAction: ...
    def save_message_async(self, chat_message: typing.Optional[ChatMessage], /) -> winsdk.windows.foundation.IAsyncAction: ...
    def send_message_async(self, chat_message: typing.Optional[ChatMessage], /) -> winsdk.windows.foundation.IAsyncAction: ...
    def try_cancel_download_message_async(self, local_chat_message_id: str, /) -> winsdk.windows.foundation.IAsyncOperation[winsdk.system.Boolean]: ...
    def try_cancel_send_message_async(self, local_chat_message_id: str, /) -> winsdk.windows.foundation.IAsyncOperation[winsdk.system.Boolean]: ...
    def validate_message(self, chat_message: typing.Optional[ChatMessage], /) -> typing.Optional[ChatMessageValidationResult]: ...
    def add_message_changed(self, value: winsdk.windows.foundation.TypedEventHandler[ChatMessageStore, ChatMessageChangedEventArgs], /) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_message_changed(self, value: winsdk.windows.foundation.EventRegistrationToken, /) -> None: ...
    def add_store_changed(self, handler: winsdk.windows.foundation.TypedEventHandler[ChatMessageStore, ChatMessageStoreChangedEventArgs], /) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_store_changed(self, token: winsdk.windows.foundation.EventRegistrationToken, /) -> None: ...

class ChatMessageStoreChangedEventArgs(winsdk.system.Object):
    id: str
    kind: ChatStoreChangedEventKind
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> ChatMessageStoreChangedEventArgs: ...

class ChatMessageTransport(winsdk.system.Object):
    is_active: winsdk.system.Boolean
    is_app_set_as_notification_provider: winsdk.system.Boolean
    transport_friendly_name: str
    transport_id: str
    configuration: typing.Optional[ChatMessageTransportConfiguration]
    transport_kind: ChatMessageTransportKind
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> ChatMessageTransport: ...
    def request_set_as_notification_provider_async(self) -> winsdk.windows.foundation.IAsyncAction: ...

class ChatMessageTransportConfiguration(winsdk.system.Object):
    extended_properties: typing.Optional[winsdk.windows.foundation.collections.IMapView[str, winsdk.system.Object]]
    max_attachment_count: winsdk.system.Int32
    max_message_size_in_kilobytes: winsdk.system.Int32
    max_recipient_count: winsdk.system.Int32
    supported_video_format: typing.Optional[winsdk.windows.media.mediaproperties.MediaEncodingProfile]
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> ChatMessageTransportConfiguration: ...

class ChatMessageValidationResult(winsdk.system.Object):
    max_part_count: typing.Optional[typing.Optional[winsdk.system.UInt32]]
    part_count: typing.Optional[typing.Optional[winsdk.system.UInt32]]
    remaining_character_count_in_part: typing.Optional[typing.Optional[winsdk.system.UInt32]]
    status: ChatMessageValidationStatus
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> ChatMessageValidationResult: ...

class ChatQueryOptions(winsdk.system.Object):
    search_string: str
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> ChatQueryOptions: ...
    def __new__(cls: typing.Type[ChatQueryOptions]) -> ChatQueryOptions:...

class ChatRecipientDeliveryInfo(winsdk.system.Object):
    transport_address: str
    read_time: typing.Optional[typing.Optional[datetime.datetime]]
    delivery_time: typing.Optional[typing.Optional[datetime.datetime]]
    is_error_permanent: winsdk.system.Boolean
    status: ChatMessageStatus
    transport_error_code: winsdk.system.Int32
    transport_error_code_category: ChatTransportErrorCodeCategory
    transport_interpreted_error_code: ChatTransportInterpretedErrorCode
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> ChatRecipientDeliveryInfo: ...
    def __new__(cls: typing.Type[ChatRecipientDeliveryInfo]) -> ChatRecipientDeliveryInfo:...

class ChatSearchReader(winsdk.system.Object):
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> ChatSearchReader: ...
    @typing.overload
    def read_batch_async(self) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.foundation.collections.IVectorView[IChatItem]]: ...
    @typing.overload
    def read_batch_async(self, count: winsdk.system.Int32, /) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.foundation.collections.IVectorView[IChatItem]]: ...

class ChatSyncConfiguration(winsdk.system.Object):
    restore_history_span: ChatRestoreHistorySpan
    is_sync_enabled: winsdk.system.Boolean
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> ChatSyncConfiguration: ...

class ChatSyncManager(winsdk.system.Object):
    configuration: typing.Optional[ChatSyncConfiguration]
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> ChatSyncManager: ...
    def associate_account_async(self, web_account: typing.Optional[winsdk.windows.security.credentials.WebAccount], /) -> winsdk.windows.foundation.IAsyncAction: ...
    def is_account_associated(self, web_account: typing.Optional[winsdk.windows.security.credentials.WebAccount], /) -> winsdk.system.Boolean: ...
    def set_configuration_async(self, configuration: typing.Optional[ChatSyncConfiguration], /) -> winsdk.windows.foundation.IAsyncAction: ...
    def start_sync(self) -> None: ...
    def unassociate_account_async(self) -> winsdk.windows.foundation.IAsyncAction: ...

class RcsEndUserMessage(winsdk.system.Object):
    actions: typing.Optional[winsdk.windows.foundation.collections.IVectorView[RcsEndUserMessageAction]]
    is_pin_required: winsdk.system.Boolean
    text: str
    title: str
    transport_id: str
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> RcsEndUserMessage: ...
    def send_response_async(self, action: typing.Optional[RcsEndUserMessageAction], /) -> winsdk.windows.foundation.IAsyncAction: ...
    def send_response_with_pin_async(self, action: typing.Optional[RcsEndUserMessageAction], pin: str, /) -> winsdk.windows.foundation.IAsyncAction: ...

class RcsEndUserMessageAction(winsdk.system.Object):
    label: str
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> RcsEndUserMessageAction: ...

class RcsEndUserMessageAvailableEventArgs(winsdk.system.Object):
    is_message_available: winsdk.system.Boolean
    message: typing.Optional[RcsEndUserMessage]
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> RcsEndUserMessageAvailableEventArgs: ...

class RcsEndUserMessageAvailableTriggerDetails(winsdk.system.Object):
    text: str
    title: str
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> RcsEndUserMessageAvailableTriggerDetails: ...

class RcsEndUserMessageManager(winsdk.system.Object):
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> RcsEndUserMessageManager: ...
    def add_message_available_changed(self, handler: winsdk.windows.foundation.TypedEventHandler[RcsEndUserMessageManager, RcsEndUserMessageAvailableEventArgs], /) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_message_available_changed(self, token: winsdk.windows.foundation.EventRegistrationToken, /) -> None: ...

class RcsManager(winsdk.system.Object):
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> RcsManager: ...
    @staticmethod
    def get_end_user_message_manager() -> typing.Optional[RcsEndUserMessageManager]: ...
    @staticmethod
    def get_transport_async(transport_id: str, /) -> winsdk.windows.foundation.IAsyncOperation[RcsTransport]: ...
    @staticmethod
    def get_transports_async() -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.foundation.collections.IVectorView[RcsTransport]]: ...
    @staticmethod
    def leave_conversation_async(conversation: typing.Optional[ChatConversation], /) -> winsdk.windows.foundation.IAsyncAction: ...
    @staticmethod
    def add_transport_list_changed(handler: winsdk.windows.foundation.EventHandler[winsdk.system.Object], /) -> winsdk.windows.foundation.EventRegistrationToken: ...
    @staticmethod
    def remove_transport_list_changed(token: winsdk.windows.foundation.EventRegistrationToken, /) -> None: ...

class RcsServiceKindSupportedChangedEventArgs(winsdk.system.Object):
    service_kind: RcsServiceKind
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> RcsServiceKindSupportedChangedEventArgs: ...

class RcsTransport(winsdk.system.Object):
    configuration: typing.Optional[RcsTransportConfiguration]
    extended_properties: typing.Optional[winsdk.windows.foundation.collections.IMapView[str, winsdk.system.Object]]
    is_active: winsdk.system.Boolean
    transport_friendly_name: str
    transport_id: str
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> RcsTransport: ...
    def is_service_kind_supported(self, service_kind: RcsServiceKind, /) -> winsdk.system.Boolean: ...
    def is_store_and_forward_enabled(self, service_kind: RcsServiceKind, /) -> winsdk.system.Boolean: ...
    def add_service_kind_supported_changed(self, handler: winsdk.windows.foundation.TypedEventHandler[RcsTransport, RcsServiceKindSupportedChangedEventArgs], /) -> winsdk.windows.foundation.EventRegistrationToken: ...
    def remove_service_kind_supported_changed(self, token: winsdk.windows.foundation.EventRegistrationToken, /) -> None: ...

class RcsTransportConfiguration(winsdk.system.Object):
    max_attachment_count: winsdk.system.Int32
    max_file_size_in_kilobytes: winsdk.system.Int32
    max_group_message_size_in_kilobytes: winsdk.system.Int32
    max_message_size_in_kilobytes: winsdk.system.Int32
    max_recipient_count: winsdk.system.Int32
    warning_file_size_in_kilobytes: winsdk.system.Int32
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> RcsTransportConfiguration: ...

class RemoteParticipantComposingChangedEventArgs(winsdk.system.Object):
    is_composing: winsdk.system.Boolean
    participant_address: str
    transport_id: str
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> RemoteParticipantComposingChangedEventArgs: ...

class IChatItem(winsdk.system.Object):
    item_kind: ChatItemKind
    @staticmethod
    def _from(obj: winsdk.system.Object, /) -> IChatItem: ...

