//
// Copyright (c) Microsoft Corporation. All rights reserved.
// 
//
// File generated by WinMDIDL version 8.00.0014
//

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "Windows.Foundation.idl";
import "Windows.Storage.Streams.idl";
// Additional imports to ensure that all required headers are included
cpp_quote("#if defined(__cplusplus)")
cpp_quote("}")
cpp_quote("#endif // defined(__cplusplus)")
cpp_quote("#include <Windows.Foundation.h>")
cpp_quote("#if !defined(__windows2Estorage2Estreams_h__)")
cpp_quote("#include <Windows.Storage.Streams.h>")
cpp_quote("#endif // !defined(__windows2Estorage2Estreams_h__)")
cpp_quote("#if defined(__cplusplus)")
cpp_quote("extern \"C\" {")
cpp_quote("#endif // defined(__cplusplus)")

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        typedef struct DateTime DateTime;

        interface IAsyncAction;
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace Streams
        {
            interface IInputStream;

            interface IRandomAccessStream;

            interface IRandomAccessStreamReference;
        }
    }
}
namespace Windows
{
    namespace Phone
    {
        namespace PersonalInformation
        {
            typedef enum ContactStoreSystemAccessMode ContactStoreSystemAccessMode;

            typedef enum ContactStoreApplicationAccessMode ContactStoreApplicationAccessMode;

            typedef enum ContactChangeType ContactChangeType;

            typedef enum ContactQueryResultOrdering ContactQueryResultOrdering;

            typedef enum VCardFormat VCardFormat;

            interface IContactAddress;

            interface IContactInformation;

            interface IContactInformation2;

            interface IContactInformationStatics;

            interface IStoredContact;

            interface IStoredContactFactory;

            interface IKnownContactPropertiesStatics;

            interface IContactQueryResult;

            interface IContactQueryOptions;

            interface IContactStore;

            interface IContactStore2;

            interface IContactStoreStatics;

            interface IContactChangeRecord;

            runtimeclass ContactAddress;

            runtimeclass ContactInformation;

            runtimeclass ContactStore;

            runtimeclass StoredContact;

            runtimeclass KnownContactProperties;

            runtimeclass ContactQueryOptions;

            runtimeclass ContactQueryResult;

            runtimeclass ContactChangeRecord;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Phone
    {
        namespace PersonalInformation
        {
            declare
            {
                interface Windows.Foundation.Collections.IIterable<Windows.Phone.PersonalInformation.ContactChangeRecord*>;

                interface Windows.Foundation.Collections.IIterable<Windows.Phone.PersonalInformation.StoredContact*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Phone.PersonalInformation.ContactChangeRecord*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Phone.PersonalInformation.StoredContact*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Phone.PersonalInformation.ContactChangeRecord*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Phone.PersonalInformation.StoredContact*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.Phone.PersonalInformation.ContactChangeRecord*>*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.Phone.PersonalInformation.StoredContact*>*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Phone.PersonalInformation.ContactInformation*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Phone.PersonalInformation.ContactStore*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Phone.PersonalInformation.StoredContact*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Phone
    {
        namespace PersonalInformation
        {
            [version(0x06020000)]
            enum ContactStoreSystemAccessMode
            {
                ReadOnly  = 0,
                ReadWrite = 1
            };

            [version(0x06020000)]
            enum ContactStoreApplicationAccessMode
            {
                LimitedReadOnly = 0,
                ReadOnly        = 1
            };

            [version(0x06020000)]
            enum ContactChangeType
            {
                Created  = 0,
                Modified = 1,
                Deleted  = 2
            };

            [version(0x06020000)]
            enum ContactQueryResultOrdering
            {
                SystemDefault       = 0,
                GivenNameFamilyName = 1,
                FamilyNameGivenName = 2
            };

            [version(0x06020000)]
            enum VCardFormat
            {
                Version2_1 = 0,
                Version3   = 1
            };

            [exclusiveto(Windows.Phone.PersonalInformation.ContactAddress)]
            [uuid(5F24F927-94A9-44A2-A155-2D0B37D1DCCD)]
            [version(0x06020000)]
            interface IContactAddress : IInspectable
            {
                [propget] HRESULT Country([out] [retval] HSTRING* value);
                [propput] HRESULT Country([in] HSTRING value);
                [propget] HRESULT Locality([out] [retval] HSTRING* value);
                [propput] HRESULT Locality([in] HSTRING value);
                [propget] HRESULT Region([out] [retval] HSTRING* value);
                [propput] HRESULT Region([in] HSTRING value);
                [propget] HRESULT PostalCode([out] [retval] HSTRING* value);
                [propput] HRESULT PostalCode([in] HSTRING value);
                [propget] HRESULT StreetAddress([out] [retval] HSTRING* value);
                [propput] HRESULT StreetAddress([in] HSTRING value);
            }

            [uuid(E2B51FFC-E792-4AB7-B15B-F2E078664DEA)]
            [version(0x06020000)]
            interface IContactInformation : IInspectable
            {
                [propget] HRESULT DisplayName([out] [retval] HSTRING* value);
                [propput] HRESULT DisplayName([in] HSTRING value);
                [propget] HRESULT FamilyName([out] [retval] HSTRING* value);
                [propput] HRESULT FamilyName([in] HSTRING value);
                [propget] HRESULT GivenName([out] [retval] HSTRING* value);
                [propput] HRESULT GivenName([in] HSTRING value);
                [propget] HRESULT HonorificPrefix([out] [retval] HSTRING* value);
                [propput] HRESULT HonorificPrefix([in] HSTRING value);
                [propget] HRESULT HonorificSuffix([out] [retval] HSTRING* value);
                [propput] HRESULT HonorificSuffix([in] HSTRING value);
                HRESULT GetDisplayPictureAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Storage.Streams.IRandomAccessStream*>** operation);
                HRESULT SetDisplayPictureAsync([in] Windows.Storage.Streams.IInputStream* stream, [out] [retval] Windows.Foundation.IAsyncAction** action);
                [propget] HRESULT DisplayPicture([out] [retval] Windows.Storage.Streams.IRandomAccessStreamReference** value);
                HRESULT GetPropertiesAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IMap<HSTRING, IInspectable*>*>** operation);
                [overload("ToVcardAsync")] HRESULT ToVcardAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Storage.Streams.IRandomAccessStream*>** operation);
                [overload("ToVcardAsync")] HRESULT ToVcardWithOptionsAsync([in] Windows.Phone.PersonalInformation.VCardFormat format, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Storage.Streams.IRandomAccessStream*>** operation);
            }

            [uuid(3198B20C-621E-4668-AC38-D667B87D06D5)]
            [version(0x06030000)]
            interface IContactInformation2 : IInspectable
            {
                [propget] HRESULT DisplayPictureDate([out] [retval] Windows.Foundation.DateTime* returnValue);
                [propput] HRESULT DisplayPictureDate([in] Windows.Foundation.DateTime returnValue);
            }

            [exclusiveto(Windows.Phone.PersonalInformation.ContactInformation)]
            [uuid(0F67BB29-03D0-4BE6-B2A5-FB13859F1202)]
            [version(0x06020000)]
            interface IContactInformationStatics : IInspectable
            {
                HRESULT ParseVcardAsync([in] Windows.Storage.Streams.IInputStream* vcard, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Phone.PersonalInformation.ContactInformation*>** operation);
            }

            [exclusiveto(Windows.Phone.PersonalInformation.StoredContact)]
            [uuid(B070B7B1-263D-4E71-ABE7-591D2466570E)]
            [version(0x06020000)]
            interface IStoredContact : IInspectable
                requires
                    Windows.Phone.PersonalInformation.IContactInformation
            {
                [propget] HRESULT Store([out] [retval] Windows.Phone.PersonalInformation.ContactStore** value);
                [propget] HRESULT Id([out] [retval] HSTRING* value);
                [propget] HRESULT RemoteId([out] [retval] HSTRING* value);
                [propput] HRESULT RemoteId([in] HSTRING value);
                HRESULT GetExtendedPropertiesAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IMap<HSTRING, IInspectable*>*>** operation);
                HRESULT SaveAsync([out] [retval] Windows.Foundation.IAsyncAction** result);
                HRESULT ReplaceExistingContactAsync([in] HSTRING id, [out] [retval] Windows.Foundation.IAsyncAction** result);
            }

            [exclusiveto(Windows.Phone.PersonalInformation.StoredContact)]
            [uuid(49EDE921-C225-4FD9-89C5-CECC2C8A4B79)]
            [version(0x06020000)]
            interface IStoredContactFactory : IInspectable
            {
                HRESULT CreateStoredContact([in] Windows.Phone.PersonalInformation.ContactStore* store, [out] [retval] Windows.Phone.PersonalInformation.StoredContact** result);
                HRESULT CreateStoredContactFromInformation([in] Windows.Phone.PersonalInformation.ContactStore* store, [in] Windows.Phone.PersonalInformation.ContactInformation* contact, [out] [retval] Windows.Phone.PersonalInformation.StoredContact** result);
            }

            [exclusiveto(Windows.Phone.PersonalInformation.KnownContactProperties)]
            [uuid(D5812B01-2CED-4EE6-B1D6-094BF88EF0B6)]
            [version(0x06020000)]
            interface IKnownContactPropertiesStatics : IInspectable
            {
                [propget] HRESULT DisplayName([out] [retval] HSTRING* value);
                [propget] HRESULT FamilyName([out] [retval] HSTRING* value);
                [propget] HRESULT GivenName([out] [retval] HSTRING* value);
                [propget] HRESULT HonorificPrefix([out] [retval] HSTRING* value);
                [propget] HRESULT HonorificSuffix([out] [retval] HSTRING* value);
                [propget] HRESULT AdditionalName([out] [retval] HSTRING* value);
                [propget] HRESULT Address([out] [retval] HSTRING* value);
                [propget] HRESULT OtherAddress([out] [retval] HSTRING* value);
                [propget] HRESULT Email([out] [retval] HSTRING* value);
                [propget] HRESULT WorkAddress([out] [retval] HSTRING* value);
                [propget] HRESULT WorkTelephone([out] [retval] HSTRING* value);
                [propget] HRESULT JobTitle([out] [retval] HSTRING* value);
                [propget] HRESULT Birthdate([out] [retval] HSTRING* value);
                [propget] HRESULT Anniversary([out] [retval] HSTRING* value);
                [propget] HRESULT Telephone([out] [retval] HSTRING* value);
                [propget] HRESULT MobileTelephone([out] [retval] HSTRING* value);
                [propget] HRESULT Url([out] [retval] HSTRING* value);
                [propget] HRESULT Notes([out] [retval] HSTRING* value);
                [propget] HRESULT WorkFax([out] [retval] HSTRING* value);
                [propget] HRESULT Children([out] [retval] HSTRING* value);
                [propget] HRESULT SignificantOther([out] [retval] HSTRING* value);
                [propget] HRESULT CompanyName([out] [retval] HSTRING* value);
                [propget] HRESULT CompanyTelephone([out] [retval] HSTRING* value);
                [propget] HRESULT HomeFax([out] [retval] HSTRING* value);
                [propget] HRESULT AlternateTelephone([out] [retval] HSTRING* value);
                [propget] HRESULT Manager([out] [retval] HSTRING* value);
                [propget] HRESULT Nickname([out] [retval] HSTRING* value);
                [propget] HRESULT OfficeLocation([out] [retval] HSTRING* value);
                [propget] HRESULT WorkEmail([out] [retval] HSTRING* value);
                [propget] HRESULT YomiGivenName([out] [retval] HSTRING* value);
                [propget] HRESULT YomiFamilyName([out] [retval] HSTRING* value);
                [propget] HRESULT YomiCompanyName([out] [retval] HSTRING* value);
                [propget] HRESULT OtherEmail([out] [retval] HSTRING* value);
                [propget] HRESULT AlternateMobileTelephone([out] [retval] HSTRING* value);
                [propget] HRESULT AlternateWorkTelephone([out] [retval] HSTRING* value);
            }

            [exclusiveto(Windows.Phone.PersonalInformation.ContactQueryResult)]
            [uuid(C03DB722-ECDB-4700-857E-3E786426B04B)]
            [version(0x06020000)]
            interface IContactQueryResult : IInspectable
            {
                HRESULT GetContactCountAsync([out] [retval] Windows.Foundation.IAsyncOperation<UINT32>** operation);
                [overload("GetContactsAsync")] HRESULT GetContactsAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.Phone.PersonalInformation.StoredContact*>*>** operation);
                [overload("GetContactsAsync")] HRESULT GetContactsAsyncInRange([in] UINT32 startIndex, [in] UINT32 maxNumberOfItems, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.Phone.PersonalInformation.StoredContact*>*>** operation);
                HRESULT GetCurrentQueryOptions([out] [retval] Windows.Phone.PersonalInformation.ContactQueryOptions** value);
            }

            [exclusiveto(Windows.Phone.PersonalInformation.ContactQueryOptions)]
            [uuid(580CAB76-3F31-46C1-9A50-424A53DACAE3)]
            [version(0x06020000)]
            interface IContactQueryOptions : IInspectable
            {
                [propget] HRESULT DesiredFields([out] [retval] Windows.Foundation.Collections.IVector<HSTRING>** value);
                [propget] HRESULT OrderBy([out] [retval] Windows.Phone.PersonalInformation.ContactQueryResultOrdering* value);
                [propput] HRESULT OrderBy([in] Windows.Phone.PersonalInformation.ContactQueryResultOrdering value);
            }

            [exclusiveto(Windows.Phone.PersonalInformation.ContactStore)]
            [uuid(B2CD6FEF-2BFD-4FAD-8552-4E698097E8EB)]
            [version(0x06020000)]
            interface IContactStore : IInspectable
            {
                HRESULT FindContactByRemoteIdAsync([in] HSTRING id, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Phone.PersonalInformation.StoredContact*>** operation);
                HRESULT FindContactByIdAsync([in] HSTRING id, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Phone.PersonalInformation.StoredContact*>** operation);
                HRESULT DeleteContactAsync([in] HSTRING id, [out] [retval] Windows.Foundation.IAsyncAction** result);
                [overload("CreateContactQuery")] HRESULT CreateContactQueryDefault([out] [retval] Windows.Phone.PersonalInformation.ContactQueryResult** result);
                [overload("CreateContactQuery")] HRESULT CreateContactQueryWithOptions([in] Windows.Phone.PersonalInformation.ContactQueryOptions* options, [out] [retval] Windows.Phone.PersonalInformation.ContactQueryResult** result);
                HRESULT DeleteAsync([out] [retval] Windows.Foundation.IAsyncAction** result);
                [propget] HRESULT RevisionNumber([out] [retval] UINT64* value);
                HRESULT GetChangesAsync([in] UINT64 baseRevisionNumber, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.Phone.PersonalInformation.ContactChangeRecord*>*>** operation);
                HRESULT LoadExtendedPropertiesAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IMap<HSTRING, IInspectable*>*>** operation);
                HRESULT SaveExtendedPropertiesAsync([in] Windows.Foundation.Collections.IMapView<HSTRING, IInspectable*>* data, [out] [retval] Windows.Foundation.IAsyncAction** result);
            }

            [exclusiveto(Windows.Phone.PersonalInformation.ContactStore)]
            [uuid(65F1B64F-D653-43A7-B236-B30C0F4D7269)]
            [version(0x06030000)]
            interface IContactStore2 : IInspectable
            {
                HRESULT CreateMeContactAsync([in] HSTRING id, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Phone.PersonalInformation.StoredContact*>** operation);
            }

            [exclusiveto(Windows.Phone.PersonalInformation.ContactStore)]
            [uuid(A804FE22-4BEB-44CC-A572-67A5B92E8567)]
            [version(0x06020000)]
            interface IContactStoreStatics : IInspectable
            {
                [overload("CreateOrOpenAsync")] HRESULT CreateOrOpenAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Phone.PersonalInformation.ContactStore*>** operation);
                [overload("CreateOrOpenAsync")] HRESULT CreateOrOpenWithOptionsAsync([in] Windows.Phone.PersonalInformation.ContactStoreSystemAccessMode access, [in] Windows.Phone.PersonalInformation.ContactStoreApplicationAccessMode sharing, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Phone.PersonalInformation.ContactStore*>** operation);
            }

            [exclusiveto(Windows.Phone.PersonalInformation.ContactChangeRecord)]
            [uuid(B9D3F78F-513B-4742-BE00-CC5C5C236B04)]
            [version(0x06020000)]
            interface IContactChangeRecord : IInspectable
            {
                [propget] HRESULT ChangeType([out] [retval] Windows.Phone.PersonalInformation.ContactChangeType* value);
                [propget] HRESULT RevisionNumber([out] [retval] UINT64* value);
                [propget] HRESULT Id([out] [retval] HSTRING* value);
                [propget] HRESULT RemoteId([out] [retval] HSTRING* value);
            }

            [activatable(0x06020000)]
            [marshaling_behavior(agile)]
            [version(0x06020000)]
            runtimeclass ContactAddress
            {
                [default] interface Windows.Phone.PersonalInformation.IContactAddress;
            }

            [activatable(0x06020000)]
            [marshaling_behavior(agile)]
            [static(Windows.Phone.PersonalInformation.IContactInformationStatics, 0x06020000)]
            [version(0x06020000)]
            runtimeclass ContactInformation
            {
                [default] interface Windows.Phone.PersonalInformation.IContactInformation;
            }

            [marshaling_behavior(agile)]
            [static(Windows.Phone.PersonalInformation.IContactStoreStatics, 0x06020000)]
            [version(0x06020000)]
            runtimeclass ContactStore
            {
                [default] interface Windows.Phone.PersonalInformation.IContactStore;
                [version(0x06030000)] interface Windows.Phone.PersonalInformation.IContactStore2;
            }

            [activatable(Windows.Phone.PersonalInformation.IStoredContactFactory, 0x06020000)]
            [marshaling_behavior(agile)]
            [version(0x06020000)]
            runtimeclass StoredContact
            {
                [default] interface Windows.Phone.PersonalInformation.IStoredContact;
                interface Windows.Phone.PersonalInformation.IContactInformation;
                [version(0x06030000)] interface Windows.Phone.PersonalInformation.IContactInformation2;
            }

            [marshaling_behavior(agile)]
            [static(Windows.Phone.PersonalInformation.IKnownContactPropertiesStatics, 0x06020000)]
            [version(0x06020000)]
            runtimeclass KnownContactProperties
            {
            }

            [activatable(0x06020000)]
            [marshaling_behavior(agile)]
            [version(0x06020000)]
            runtimeclass ContactQueryOptions
            {
                [default] interface Windows.Phone.PersonalInformation.IContactQueryOptions;
            }

            [marshaling_behavior(agile)]
            [version(0x06020000)]
            runtimeclass ContactQueryResult
            {
                [default] interface Windows.Phone.PersonalInformation.IContactQueryResult;
            }

            [marshaling_behavior(agile)]
            [version(0x06020000)]
            runtimeclass ContactChangeRecord
            {
                [default] interface Windows.Phone.PersonalInformation.IContactChangeRecord;
            }
        }
    }
}
