# WARNING: Please don't edit this file. It was generated by Python/WinRT v2.0.0-beta.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.foundation
import winrt.windows.foundation.collections
import winrt.windows.storage.streams

from winrt.windows.phone.personalinformation import ContactChangeType, ContactQueryResultOrdering, ContactStoreApplicationAccessMode, ContactStoreSystemAccessMode, VCardFormat

Self = typing.TypeVar('Self')

class ContactAddress(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> ContactAddress: ...
    def __new__(cls: typing.Type[ContactAddress]) -> ContactAddress:...
    @_property
    def street_address(self) -> str: ...
    @street_address.setter
    def street_address(self, value: str) -> None: ...
    @_property
    def region(self) -> str: ...
    @region.setter
    def region(self, value: str) -> None: ...
    @_property
    def postal_code(self) -> str: ...
    @postal_code.setter
    def postal_code(self, value: str) -> None: ...
    @_property
    def locality(self) -> str: ...
    @locality.setter
    def locality(self, value: str) -> None: ...
    @_property
    def country(self) -> str: ...
    @country.setter
    def country(self, value: str) -> None: ...

class ContactChangeRecord(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> ContactChangeRecord: ...
    @_property
    def change_type(self) -> ContactChangeType: ...
    @_property
    def id(self) -> str: ...
    @_property
    def remote_id(self) -> str: ...
    @_property
    def revision_number(self) -> winrt.system.UInt64: ...

class ContactInformation_Static(type):
    def parse_vcard_async(cls, vcard: typing.Optional[winrt.windows.storage.streams.IInputStream], /) -> winrt.windows.foundation.IAsyncOperation[ContactInformation]: ...

class ContactInformation(winrt.system.Object, metaclass=ContactInformation_Static):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> ContactInformation: ...
    def __new__(cls: typing.Type[ContactInformation]) -> ContactInformation:...
    def get_display_picture_async(self) -> winrt.windows.foundation.IAsyncOperation[winrt.windows.storage.streams.IRandomAccessStream]: ...
    def get_properties_async(self) -> winrt.windows.foundation.IAsyncOperation[winrt.windows.foundation.collections.IMap[str, winrt.system.Object]]: ...
    def set_display_picture_async(self, stream: typing.Optional[winrt.windows.storage.streams.IInputStream], /) -> winrt.windows.foundation.IAsyncAction: ...
    @typing.overload
    def to_vcard_async(self) -> winrt.windows.foundation.IAsyncOperation[winrt.windows.storage.streams.IRandomAccessStream]: ...
    @typing.overload
    def to_vcard_async(self, format: VCardFormat, /) -> winrt.windows.foundation.IAsyncOperation[winrt.windows.storage.streams.IRandomAccessStream]: ...
    @_property
    def honorific_suffix(self) -> str: ...
    @honorific_suffix.setter
    def honorific_suffix(self, value: str) -> None: ...
    @_property
    def honorific_prefix(self) -> str: ...
    @honorific_prefix.setter
    def honorific_prefix(self, value: str) -> None: ...
    @_property
    def given_name(self) -> str: ...
    @given_name.setter
    def given_name(self, value: str) -> None: ...
    @_property
    def family_name(self) -> str: ...
    @family_name.setter
    def family_name(self, value: str) -> None: ...
    @_property
    def display_name(self) -> str: ...
    @display_name.setter
    def display_name(self, value: str) -> None: ...
    @_property
    def display_picture(self) -> typing.Optional[winrt.windows.storage.streams.IRandomAccessStreamReference]: ...

class ContactQueryOptions(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> ContactQueryOptions: ...
    def __new__(cls: typing.Type[ContactQueryOptions]) -> ContactQueryOptions:...
    @_property
    def order_by(self) -> ContactQueryResultOrdering: ...
    @order_by.setter
    def order_by(self, value: ContactQueryResultOrdering) -> None: ...
    @_property
    def desired_fields(self) -> typing.Optional[winrt.windows.foundation.collections.IVector[str]]: ...

class ContactQueryResult(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> ContactQueryResult: ...
    def get_contact_count_async(self) -> winrt.windows.foundation.IAsyncOperation[winrt.system.UInt32]: ...
    @typing.overload
    def get_contacts_async(self) -> winrt.windows.foundation.IAsyncOperation[winrt.windows.foundation.collections.IVectorView[StoredContact]]: ...
    @typing.overload
    def get_contacts_async(self, start_index: winrt.system.UInt32, max_number_of_items: winrt.system.UInt32, /) -> winrt.windows.foundation.IAsyncOperation[winrt.windows.foundation.collections.IVectorView[StoredContact]]: ...
    def get_current_query_options(self) -> typing.Optional[ContactQueryOptions]: ...

class ContactStore_Static(type):
    @typing.overload
    def create_or_open_async(cls) -> winrt.windows.foundation.IAsyncOperation[ContactStore]: ...
    @typing.overload
    def create_or_open_async(cls, access: ContactStoreSystemAccessMode, sharing: ContactStoreApplicationAccessMode, /) -> winrt.windows.foundation.IAsyncOperation[ContactStore]: ...

class ContactStore(winrt.system.Object, metaclass=ContactStore_Static):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> ContactStore: ...
    @typing.overload
    def create_contact_query(self) -> typing.Optional[ContactQueryResult]: ...
    @typing.overload
    def create_contact_query(self, options: typing.Optional[ContactQueryOptions], /) -> typing.Optional[ContactQueryResult]: ...
    def create_me_contact_async(self, id: str, /) -> winrt.windows.foundation.IAsyncOperation[StoredContact]: ...
    def delete_async(self) -> winrt.windows.foundation.IAsyncAction: ...
    def delete_contact_async(self, id: str, /) -> winrt.windows.foundation.IAsyncAction: ...
    def find_contact_by_id_async(self, id: str, /) -> winrt.windows.foundation.IAsyncOperation[StoredContact]: ...
    def find_contact_by_remote_id_async(self, id: str, /) -> winrt.windows.foundation.IAsyncOperation[StoredContact]: ...
    def get_changes_async(self, base_revision_number: winrt.system.UInt64, /) -> winrt.windows.foundation.IAsyncOperation[winrt.windows.foundation.collections.IVectorView[ContactChangeRecord]]: ...
    def load_extended_properties_async(self) -> winrt.windows.foundation.IAsyncOperation[winrt.windows.foundation.collections.IMap[str, winrt.system.Object]]: ...
    def save_extended_properties_async(self, data: winrt.windows.foundation.collections.IMapView[str, winrt.system.Object], /) -> winrt.windows.foundation.IAsyncAction: ...
    @_property
    def revision_number(self) -> winrt.system.UInt64: ...

class KnownContactProperties_Static(type):
    @_property
    def additional_name(cls) -> str: ...
    @_property
    def address(cls) -> str: ...
    @_property
    def alternate_mobile_telephone(cls) -> str: ...
    @_property
    def alternate_telephone(cls) -> str: ...
    @_property
    def alternate_work_telephone(cls) -> str: ...
    @_property
    def anniversary(cls) -> str: ...
    @_property
    def birthdate(cls) -> str: ...
    @_property
    def children(cls) -> str: ...
    @_property
    def company_name(cls) -> str: ...
    @_property
    def company_telephone(cls) -> str: ...
    @_property
    def display_name(cls) -> str: ...
    @_property
    def email(cls) -> str: ...
    @_property
    def family_name(cls) -> str: ...
    @_property
    def given_name(cls) -> str: ...
    @_property
    def home_fax(cls) -> str: ...
    @_property
    def honorific_prefix(cls) -> str: ...
    @_property
    def honorific_suffix(cls) -> str: ...
    @_property
    def job_title(cls) -> str: ...
    @_property
    def manager(cls) -> str: ...
    @_property
    def mobile_telephone(cls) -> str: ...
    @_property
    def nickname(cls) -> str: ...
    @_property
    def notes(cls) -> str: ...
    @_property
    def office_location(cls) -> str: ...
    @_property
    def other_address(cls) -> str: ...
    @_property
    def other_email(cls) -> str: ...
    @_property
    def significant_other(cls) -> str: ...
    @_property
    def telephone(cls) -> str: ...
    @_property
    def url(cls) -> str: ...
    @_property
    def work_address(cls) -> str: ...
    @_property
    def work_email(cls) -> str: ...
    @_property
    def work_fax(cls) -> str: ...
    @_property
    def work_telephone(cls) -> str: ...
    @_property
    def yomi_company_name(cls) -> str: ...
    @_property
    def yomi_family_name(cls) -> str: ...
    @_property
    def yomi_given_name(cls) -> str: ...

class KnownContactProperties(winrt.system.Object, metaclass=KnownContactProperties_Static):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> KnownContactProperties: ...

class StoredContact(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> StoredContact: ...
    @typing.overload
    def __new__(cls: typing.Type[StoredContact], store: typing.Optional[ContactStore]) -> StoredContact:...
    @typing.overload
    def __new__(cls: typing.Type[StoredContact], store: typing.Optional[ContactStore], contact: typing.Optional[ContactInformation]) -> StoredContact:...
    def get_display_picture_async(self) -> winrt.windows.foundation.IAsyncOperation[winrt.windows.storage.streams.IRandomAccessStream]: ...
    def get_extended_properties_async(self) -> winrt.windows.foundation.IAsyncOperation[winrt.windows.foundation.collections.IMap[str, winrt.system.Object]]: ...
    def get_properties_async(self) -> winrt.windows.foundation.IAsyncOperation[winrt.windows.foundation.collections.IMap[str, winrt.system.Object]]: ...
    def replace_existing_contact_async(self, id: str, /) -> winrt.windows.foundation.IAsyncAction: ...
    def save_async(self) -> winrt.windows.foundation.IAsyncAction: ...
    def set_display_picture_async(self, stream: typing.Optional[winrt.windows.storage.streams.IInputStream], /) -> winrt.windows.foundation.IAsyncAction: ...
    @typing.overload
    def to_vcard_async(self) -> winrt.windows.foundation.IAsyncOperation[winrt.windows.storage.streams.IRandomAccessStream]: ...
    @typing.overload
    def to_vcard_async(self, format: VCardFormat, /) -> winrt.windows.foundation.IAsyncOperation[winrt.windows.storage.streams.IRandomAccessStream]: ...
    @_property
    def honorific_suffix(self) -> str: ...
    @honorific_suffix.setter
    def honorific_suffix(self, value: str) -> None: ...
    @_property
    def honorific_prefix(self) -> str: ...
    @honorific_prefix.setter
    def honorific_prefix(self, value: str) -> None: ...
    @_property
    def given_name(self) -> str: ...
    @given_name.setter
    def given_name(self, value: str) -> None: ...
    @_property
    def family_name(self) -> str: ...
    @family_name.setter
    def family_name(self, value: str) -> None: ...
    @_property
    def display_name(self) -> str: ...
    @display_name.setter
    def display_name(self, value: str) -> None: ...
    @_property
    def display_picture(self) -> typing.Optional[winrt.windows.storage.streams.IRandomAccessStreamReference]: ...
    @_property
    def display_picture_date(self) -> datetime.datetime: ...
    @display_picture_date.setter
    def display_picture_date(self, value: datetime.datetime) -> None: ...
    @_property
    def remote_id(self) -> str: ...
    @remote_id.setter
    def remote_id(self, value: str) -> None: ...
    @_property
    def id(self) -> str: ...
    @_property
    def store(self) -> typing.Optional[ContactStore]: ...

class IContactInformation(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> IContactInformation: ...
    def get_display_picture_async(self) -> winrt.windows.foundation.IAsyncOperation[winrt.windows.storage.streams.IRandomAccessStream]: ...
    def get_properties_async(self) -> winrt.windows.foundation.IAsyncOperation[winrt.windows.foundation.collections.IMap[str, winrt.system.Object]]: ...
    def set_display_picture_async(self, stream: typing.Optional[winrt.windows.storage.streams.IInputStream], /) -> winrt.windows.foundation.IAsyncAction: ...
    @typing.overload
    def to_vcard_async(self) -> winrt.windows.foundation.IAsyncOperation[winrt.windows.storage.streams.IRandomAccessStream]: ...
    @typing.overload
    def to_vcard_async(self, format: VCardFormat, /) -> winrt.windows.foundation.IAsyncOperation[winrt.windows.storage.streams.IRandomAccessStream]: ...
    @_property
    def display_name(self) -> str: ...
    @display_name.setter
    def display_name(self, value: str) -> None: ...
    @_property
    def display_picture(self) -> typing.Optional[winrt.windows.storage.streams.IRandomAccessStreamReference]: ...
    @_property
    def family_name(self) -> str: ...
    @family_name.setter
    def family_name(self, value: str) -> None: ...
    @_property
    def given_name(self) -> str: ...
    @given_name.setter
    def given_name(self, value: str) -> None: ...
    @_property
    def honorific_prefix(self) -> str: ...
    @honorific_prefix.setter
    def honorific_prefix(self, value: str) -> None: ...
    @_property
    def honorific_suffix(self) -> str: ...
    @honorific_suffix.setter
    def honorific_suffix(self, value: str) -> None: ...

class IContactInformation2(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> IContactInformation2: ...
    @_property
    def display_picture_date(self) -> datetime.datetime: ...
    @display_picture_date.setter
    def display_picture_date(self, value: datetime.datetime) -> None: ...

