# WARNING: Please don't edit this file. It was generated by Python/WinRT v2.0.1

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.applicationmodel.contacts
import winrt.windows.foundation

Self = typing.TypeVar('Self')

@typing.final
class ContactDataProviderConnection(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> ContactDataProviderConnection: ...
    def start(self) -> None: ...
    def add_server_search_read_batch_requested(self, handler: winrt.windows.foundation.TypedEventHandler[ContactDataProviderConnection, ContactListServerSearchReadBatchRequestEventArgs], /) -> winrt.windows.foundation.EventRegistrationToken: ...
    def remove_server_search_read_batch_requested(self, token: winrt.windows.foundation.EventRegistrationToken, /) -> None: ...
    def add_sync_requested(self, handler: winrt.windows.foundation.TypedEventHandler[ContactDataProviderConnection, ContactListSyncManagerSyncRequestEventArgs], /) -> winrt.windows.foundation.EventRegistrationToken: ...
    def remove_sync_requested(self, token: winrt.windows.foundation.EventRegistrationToken, /) -> None: ...
    def add_create_or_update_contact_requested(self, handler: winrt.windows.foundation.TypedEventHandler[ContactDataProviderConnection, ContactListCreateOrUpdateContactRequestEventArgs], /) -> winrt.windows.foundation.EventRegistrationToken: ...
    def remove_create_or_update_contact_requested(self, token: winrt.windows.foundation.EventRegistrationToken, /) -> None: ...
    def add_delete_contact_requested(self, handler: winrt.windows.foundation.TypedEventHandler[ContactDataProviderConnection, ContactListDeleteContactRequestEventArgs], /) -> winrt.windows.foundation.EventRegistrationToken: ...
    def remove_delete_contact_requested(self, token: winrt.windows.foundation.EventRegistrationToken, /) -> None: ...

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

@typing.final
class ContactListCreateOrUpdateContactRequest(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> ContactListCreateOrUpdateContactRequest: ...
    def report_completed_async(self, created_or_updated_contact: typing.Optional[winrt.windows.applicationmodel.contacts.Contact], /) -> winrt.windows.foundation.IAsyncAction: ...
    def report_failed_async(self) -> winrt.windows.foundation.IAsyncAction: ...
    @_property
    def contact(self) -> typing.Optional[winrt.windows.applicationmodel.contacts.Contact]: ...
    @_property
    def contact_list_id(self) -> str: ...

@typing.final
class ContactListCreateOrUpdateContactRequestEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> ContactListCreateOrUpdateContactRequestEventArgs: ...
    def get_deferral(self) -> typing.Optional[winrt.windows.foundation.Deferral]: ...
    @_property
    def request(self) -> typing.Optional[ContactListCreateOrUpdateContactRequest]: ...

@typing.final
class ContactListDeleteContactRequest(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> ContactListDeleteContactRequest: ...
    def report_completed_async(self) -> winrt.windows.foundation.IAsyncAction: ...
    def report_failed_async(self) -> winrt.windows.foundation.IAsyncAction: ...
    @_property
    def contact_id(self) -> str: ...
    @_property
    def contact_list_id(self) -> str: ...

@typing.final
class ContactListDeleteContactRequestEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> ContactListDeleteContactRequestEventArgs: ...
    def get_deferral(self) -> typing.Optional[winrt.windows.foundation.Deferral]: ...
    @_property
    def request(self) -> typing.Optional[ContactListDeleteContactRequest]: ...

@typing.final
class ContactListServerSearchReadBatchRequest(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> ContactListServerSearchReadBatchRequest: ...
    def report_completed_async(self) -> winrt.windows.foundation.IAsyncAction: ...
    def report_failed_async(self, batch_status: winrt.windows.applicationmodel.contacts.ContactBatchStatus, /) -> winrt.windows.foundation.IAsyncAction: ...
    def save_contact_async(self, contact: typing.Optional[winrt.windows.applicationmodel.contacts.Contact], /) -> winrt.windows.foundation.IAsyncAction: ...
    @_property
    def contact_list_id(self) -> str: ...
    @_property
    def options(self) -> typing.Optional[winrt.windows.applicationmodel.contacts.ContactQueryOptions]: ...
    @_property
    def session_id(self) -> str: ...
    @_property
    def suggested_batch_size(self) -> winrt.system.UInt32: ...

@typing.final
class ContactListServerSearchReadBatchRequestEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> ContactListServerSearchReadBatchRequestEventArgs: ...
    def get_deferral(self) -> typing.Optional[winrt.windows.foundation.Deferral]: ...
    @_property
    def request(self) -> typing.Optional[ContactListServerSearchReadBatchRequest]: ...

@typing.final
class ContactListSyncManagerSyncRequest(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> ContactListSyncManagerSyncRequest: ...
    def report_completed_async(self) -> winrt.windows.foundation.IAsyncAction: ...
    def report_failed_async(self) -> winrt.windows.foundation.IAsyncAction: ...
    @_property
    def contact_list_id(self) -> str: ...

@typing.final
class ContactListSyncManagerSyncRequestEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> ContactListSyncManagerSyncRequestEventArgs: ...
    def get_deferral(self) -> typing.Optional[winrt.windows.foundation.Deferral]: ...
    @_property
    def request(self) -> typing.Optional[ContactListSyncManagerSyncRequest]: ...

