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

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.storage.streams

class ContactChangeType(enum.IntEnum):
    CREATED = 0
    MODIFIED = 1
    DELETED = 2

class ContactQueryResultOrdering(enum.IntEnum):
    SYSTEM_DEFAULT = 0
    GIVEN_NAME_FAMILY_NAME = 1
    FAMILY_NAME_GIVEN_NAME = 2

class ContactStoreApplicationAccessMode(enum.IntEnum):
    LIMITED_READ_ONLY = 0
    READ_ONLY = 1

class ContactStoreSystemAccessMode(enum.IntEnum):
    READ_ONLY = 0
    READ_WRITE = 1

class VCardFormat(enum.IntEnum):
    VERSION2_1 = 0
    VERSION3 = 1

Self = typing.TypeVar('Self')

class ContactAddress(winsdk.system.Object):
    street_address: str
    region: str
    postal_code: str
    locality: str
    country: str
    @staticmethod
    def _from(obj: winsdk.system.Object) -> ContactAddress: ...
    def __new__(cls: typing.Type[ContactAddress]) -> ContactAddress:...

class ContactChangeRecord(winsdk.system.Object):
    change_type: ContactChangeType
    id: str
    remote_id: str
    revision_number: winsdk.system.UInt64
    @staticmethod
    def _from(obj: winsdk.system.Object) -> ContactChangeRecord: ...

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

class ContactQueryOptions(winsdk.system.Object):
    order_by: ContactQueryResultOrdering
    desired_fields: typing.Optional[winsdk.windows.foundation.collections.IVector[str]]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> ContactQueryOptions: ...
    def __new__(cls: typing.Type[ContactQueryOptions]) -> ContactQueryOptions:...

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

class ContactStore(winsdk.system.Object):
    revision_number: winsdk.system.UInt64
    @staticmethod
    def _from(obj: winsdk.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) -> winsdk.windows.foundation.IAsyncOperation[StoredContact]: ...
    @typing.overload
    @staticmethod
    def create_or_open_async() -> winsdk.windows.foundation.IAsyncOperation[ContactStore]: ...
    @typing.overload
    @staticmethod
    def create_or_open_async(access: ContactStoreSystemAccessMode, sharing: ContactStoreApplicationAccessMode) -> winsdk.windows.foundation.IAsyncOperation[ContactStore]: ...
    def delete_async(self) -> winsdk.windows.foundation.IAsyncAction: ...
    def delete_contact_async(self, id: str) -> winsdk.windows.foundation.IAsyncAction: ...
    def find_contact_by_id_async(self, id: str) -> winsdk.windows.foundation.IAsyncOperation[StoredContact]: ...
    def find_contact_by_remote_id_async(self, id: str) -> winsdk.windows.foundation.IAsyncOperation[StoredContact]: ...
    def get_changes_async(self, base_revision_number: winsdk.system.UInt64) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.foundation.collections.IVectorView[ContactChangeRecord]]: ...
    def load_extended_properties_async(self) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.foundation.collections.IMap[str, winsdk.system.Object]]: ...
    def save_extended_properties_async(self, data: winsdk.windows.foundation.collections.IMapView[str, winsdk.system.Object]) -> winsdk.windows.foundation.IAsyncAction: ...

class KnownContactProperties(winsdk.system.Object):
    additional_name: typing.ClassVar[str]
    address: typing.ClassVar[str]
    alternate_mobile_telephone: typing.ClassVar[str]
    alternate_telephone: typing.ClassVar[str]
    alternate_work_telephone: typing.ClassVar[str]
    anniversary: typing.ClassVar[str]
    birthdate: typing.ClassVar[str]
    children: typing.ClassVar[str]
    company_name: typing.ClassVar[str]
    company_telephone: typing.ClassVar[str]
    display_name: typing.ClassVar[str]
    email: typing.ClassVar[str]
    family_name: typing.ClassVar[str]
    given_name: typing.ClassVar[str]
    home_fax: typing.ClassVar[str]
    honorific_prefix: typing.ClassVar[str]
    honorific_suffix: typing.ClassVar[str]
    job_title: typing.ClassVar[str]
    manager: typing.ClassVar[str]
    mobile_telephone: typing.ClassVar[str]
    nickname: typing.ClassVar[str]
    notes: typing.ClassVar[str]
    office_location: typing.ClassVar[str]
    other_address: typing.ClassVar[str]
    other_email: typing.ClassVar[str]
    significant_other: typing.ClassVar[str]
    telephone: typing.ClassVar[str]
    url: typing.ClassVar[str]
    work_address: typing.ClassVar[str]
    work_email: typing.ClassVar[str]
    work_fax: typing.ClassVar[str]
    work_telephone: typing.ClassVar[str]
    yomi_company_name: typing.ClassVar[str]
    yomi_family_name: typing.ClassVar[str]
    yomi_given_name: typing.ClassVar[str]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> KnownContactProperties: ...

class StoredContact(winsdk.system.Object):
    honorific_suffix: str
    honorific_prefix: str
    given_name: str
    family_name: str
    display_name: str
    display_picture: typing.Optional[winsdk.windows.storage.streams.IRandomAccessStreamReference]
    display_picture_date: datetime.datetime
    remote_id: str
    id: str
    store: typing.Optional[ContactStore]
    @staticmethod
    def _from(obj: winsdk.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) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.storage.streams.IRandomAccessStream]: ...
    def get_extended_properties_async(self) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.foundation.collections.IMap[str, winsdk.system.Object]]: ...
    def get_properties_async(self) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.foundation.collections.IMap[str, winsdk.system.Object]]: ...
    def replace_existing_contact_async(self, id: str) -> winsdk.windows.foundation.IAsyncAction: ...
    def save_async(self) -> winsdk.windows.foundation.IAsyncAction: ...
    def set_display_picture_async(self, stream: typing.Optional[winsdk.windows.storage.streams.IInputStream]) -> winsdk.windows.foundation.IAsyncAction: ...
    @typing.overload
    def to_vcard_async(self) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.storage.streams.IRandomAccessStream]: ...
    @typing.overload
    def to_vcard_async(self, format: VCardFormat) -> winsdk.windows.foundation.IAsyncOperation[winsdk.windows.storage.streams.IRandomAccessStream]: ...

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

class IContactInformation2(winsdk.system.Object):
    display_picture_date: datetime.datetime
    @staticmethod
    def _from(obj: winsdk.system.Object) -> IContactInformation2: ...

