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

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
    {
        runtimeclass Uri;
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace Streams
        {
            interface IRandomAccessStreamReference;

            interface IRandomAccessStreamWithContentType;
        }
    }
}
namespace Windows
{
    namespace ApplicationModel
    {
        namespace Contacts
        {
            typedef enum ContactFieldType ContactFieldType;

            typedef enum ContactFieldCategory ContactFieldCategory;

            typedef enum ContactSelectionMode ContactSelectionMode;

            interface IContactField;

            interface IContactLocationField;

            interface IContactInstantMessageField;

            interface IKnownContactFieldStatics;

            interface IContactInformation;

            interface IContactPicker;

            interface IContact;

            interface IContactFieldFactory;

            interface IContactLocationFieldFactory;

            interface IContactInstantMessageFieldFactory;

            runtimeclass ContactField;

            runtimeclass ContactLocationField;

            runtimeclass ContactInstantMessageField;

            runtimeclass KnownContactField;

            runtimeclass ContactInformation;

            runtimeclass ContactPicker;

            runtimeclass Contact;

            runtimeclass ContactFieldFactory;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace ApplicationModel
    {
        namespace Contacts
        {
            declare
            {
                interface Windows.Foundation.Collections.IIterable<Windows.ApplicationModel.Contacts.ContactField*>;

                interface Windows.Foundation.Collections.IIterable<Windows.ApplicationModel.Contacts.ContactInformation*>;

                interface Windows.Foundation.Collections.IIterable<Windows.ApplicationModel.Contacts.ContactInstantMessageField*>;

                interface Windows.Foundation.Collections.IIterable<Windows.ApplicationModel.Contacts.ContactLocationField*>;

                interface Windows.Foundation.Collections.IIterable<Windows.ApplicationModel.Contacts.IContactField*>;

                interface Windows.Foundation.Collections.IIterator<Windows.ApplicationModel.Contacts.ContactField*>;

                interface Windows.Foundation.Collections.IIterator<Windows.ApplicationModel.Contacts.ContactInformation*>;

                interface Windows.Foundation.Collections.IIterator<Windows.ApplicationModel.Contacts.ContactInstantMessageField*>;

                interface Windows.Foundation.Collections.IIterator<Windows.ApplicationModel.Contacts.ContactLocationField*>;

                interface Windows.Foundation.Collections.IIterator<Windows.ApplicationModel.Contacts.IContactField*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Contacts.ContactField*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Contacts.ContactInformation*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Contacts.ContactInstantMessageField*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Contacts.ContactLocationField*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Contacts.IContactField*>;

                interface Windows.Foundation.Collections.IVector<Windows.ApplicationModel.Contacts.IContactField*>;

                interface Windows.Foundation.IAsyncOperation<Windows.ApplicationModel.Contacts.ContactInformation*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Contacts.ContactInformation*>*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace ApplicationModel
    {
        namespace Contacts
        {
            [version(0x06020000)]
            enum ContactFieldType
            {
                Email          = 0,
                PhoneNumber    = 1,
                Location       = 2,
                InstantMessage = 3,
                Custom         = 4
            };

            [version(0x06020000)]
            enum ContactFieldCategory
            {
                None   = 0,
                Home   = 1,
                Work   = 2,
                Mobile = 3,
                Other  = 4
            };

            [version(0x06020000)]
            enum ContactSelectionMode
            {
                Contacts = 0,
                Fields   = 1
            };

            [uuid(B176486A-D293-492C-A058-DB575B3E3C0F)]
            [version(0x06020000)]
            interface IContactField : IInspectable
            {
                [propget] HRESULT Type([out] [retval] Windows.ApplicationModel.Contacts.ContactFieldType* value);
                [propget] HRESULT Category([out] [retval] Windows.ApplicationModel.Contacts.ContactFieldCategory* value);
                [propget] HRESULT Name([out] [retval] HSTRING* value);
                [propget] HRESULT Value([out] [retval] HSTRING* value);
            }

            [uuid(9EC00F82-AB6E-4B36-89E3-B23BC0A1DACC)]
            [version(0x06020000)]
            [exclusiveto(Windows.ApplicationModel.Contacts.ContactLocationField)]
            interface IContactLocationField : IInspectable
                requires
                    Windows.ApplicationModel.Contacts.IContactField
            {
                [propget] HRESULT UnstructuredAddress([out] [retval] HSTRING* value);
                [propget] HRESULT Street([out] [retval] HSTRING* value);
                [propget] HRESULT City([out] [retval] HSTRING* value);
                [propget] HRESULT Region([out] [retval] HSTRING* value);
                [propget] HRESULT Country([out] [retval] HSTRING* value);
                [propget] HRESULT PostalCode([out] [retval] HSTRING* value);
            }

            [uuid(CCE33B37-0D85-41FA-B43D-DA599C3EB009)]
            [exclusiveto(Windows.ApplicationModel.Contacts.ContactInstantMessageField)]
            [version(0x06020000)]
            interface IContactInstantMessageField : IInspectable
                requires
                    Windows.ApplicationModel.Contacts.IContactField
            {
                [propget] HRESULT UserName([out] [retval] HSTRING* value);
                [propget] HRESULT Service([out] [retval] HSTRING* value);
                [propget] HRESULT DisplayText([out] [retval] HSTRING* value);
                [propget] HRESULT LaunchUri([out] [retval] Windows.Foundation.Uri** value);
            }

            [uuid(2E0E1B12-D627-4FCA-BAD4-1FAF168C7D14)]
            [version(0x06020000)]
            [exclusiveto(Windows.ApplicationModel.Contacts.KnownContactField)]
            interface IKnownContactFieldStatics : IInspectable
            {
                [propget] HRESULT Email([out] [retval] HSTRING* value);
                [propget] HRESULT PhoneNumber([out] [retval] HSTRING* value);
                [propget] HRESULT Location([out] [retval] HSTRING* value);
                [propget] HRESULT InstantMessage([out] [retval] HSTRING* value);
                HRESULT ConvertNameToType([in] HSTRING name, [out] [retval] Windows.ApplicationModel.Contacts.ContactFieldType* type);
                HRESULT ConvertTypeToName([in] Windows.ApplicationModel.Contacts.ContactFieldType type, [out] [retval] HSTRING* name);
            }

            [uuid(275EB6D4-6A2E-4278-A914-E460D5F088F6)]
            [exclusiveto(Windows.ApplicationModel.Contacts.ContactInformation)]
            [version(0x06020000)]
            interface IContactInformation : IInspectable
            {
                [propget] HRESULT Name([out] [retval] HSTRING* value);
                HRESULT GetThumbnailAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Storage.Streams.IRandomAccessStreamWithContentType*>** operation);
                [propget] HRESULT Emails([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Contacts.ContactField*>** value);
                [propget] HRESULT PhoneNumbers([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Contacts.ContactField*>** value);
                [propget] HRESULT Locations([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Contacts.ContactLocationField*>** value);
                [propget] HRESULT InstantMessages([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Contacts.ContactInstantMessageField*>** value);
                [propget] HRESULT CustomFields([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Contacts.ContactField*>** value);
                HRESULT QueryCustomFields([in] HSTRING customName, [out] [retval] Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Contacts.ContactField*>** value);
            }

            [uuid(0E09FD91-42F8-4055-90A0-896F96738936)]
            [exclusiveto(Windows.ApplicationModel.Contacts.ContactPicker)]
            [version(0x06020000)]
            interface IContactPicker : IInspectable
            {
                [propget] HRESULT CommitButtonText([out] [retval] HSTRING* value);
                [propput] HRESULT CommitButtonText([in] HSTRING value);
                [propget] HRESULT SelectionMode([out] [retval] Windows.ApplicationModel.Contacts.ContactSelectionMode* value);
                [propput] HRESULT SelectionMode([in] Windows.ApplicationModel.Contacts.ContactSelectionMode value);
                [propget] HRESULT DesiredFields([out] [retval] Windows.Foundation.Collections.IVector<HSTRING>** value);
                HRESULT PickSingleContactAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.ApplicationModel.Contacts.ContactInformation*>** result);
                HRESULT PickMultipleContactsAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Contacts.ContactInformation*>*>** result);
            }

            [uuid(EC0072F3-2118-4049-9EBC-17F0AB692B64)]
            [version(0x06020000)]
            [exclusiveto(Windows.ApplicationModel.Contacts.Contact)]
            interface IContact : IInspectable
            {
                [propget] HRESULT Name([out] [retval] HSTRING* value);
                [propput] HRESULT Name([in] HSTRING value);
                [propget] HRESULT Thumbnail([out] [retval] Windows.Storage.Streams.IRandomAccessStreamReference** value);
                [propput] HRESULT Thumbnail([in] Windows.Storage.Streams.IRandomAccessStreamReference* value);
                [propget] HRESULT Fields([out] [retval] Windows.Foundation.Collections.IVector<Windows.ApplicationModel.Contacts.IContactField*>** value);
            }

            [uuid(85E2913F-0E4A-4A3E-8994-406AE7ED646E)]
            [version(0x06020000)]
            interface IContactFieldFactory : IInspectable
            {
                [overload("CreateField")] HRESULT CreateField_Default([in] HSTRING value, [in] Windows.ApplicationModel.Contacts.ContactFieldType type, [out] [retval] Windows.ApplicationModel.Contacts.ContactField** field);
                [overload("CreateField")] HRESULT CreateField_Category([in] HSTRING value, [in] Windows.ApplicationModel.Contacts.ContactFieldType type, [in] Windows.ApplicationModel.Contacts.ContactFieldCategory category, [out] [retval] Windows.ApplicationModel.Contacts.ContactField** field);
                [overload("CreateField")] HRESULT CreateField_Custom([in] HSTRING name, [in] HSTRING value, [in] Windows.ApplicationModel.Contacts.ContactFieldType type, [in] Windows.ApplicationModel.Contacts.ContactFieldCategory category, [out] [retval] Windows.ApplicationModel.Contacts.ContactField** field);
            }

            [uuid(F79932D7-2FDF-43FE-8F18-41897390BCFE)]
            [version(0x06020000)]
            interface IContactLocationFieldFactory : IInspectable
            {
                [overload("CreateLocation")] HRESULT CreateLocation_Default([in] HSTRING unstructuredAddress, [out] [retval] Windows.ApplicationModel.Contacts.ContactLocationField** field);
                [overload("CreateLocation")] HRESULT CreateLocation_Category([in] HSTRING unstructuredAddress, [in] Windows.ApplicationModel.Contacts.ContactFieldCategory category, [out] [retval] Windows.ApplicationModel.Contacts.ContactLocationField** field);
                [overload("CreateLocation")] HRESULT CreateLocation_All([in] HSTRING unstructuredAddress, [in] Windows.ApplicationModel.Contacts.ContactFieldCategory category, [in] HSTRING street, [in] HSTRING city, [in] HSTRING region, [in] HSTRING country, [in] HSTRING postalCode, [out] [retval] Windows.ApplicationModel.Contacts.ContactLocationField** field);
            }

            [uuid(BA0B6794-91A3-4BB2-B1B9-69A5DFF0BA09)]
            [version(0x06020000)]
            interface IContactInstantMessageFieldFactory : IInspectable
            {
                [overload("CreateInstantMessage")] HRESULT CreateInstantMessage_Default([in] HSTRING userName, [out] [retval] Windows.ApplicationModel.Contacts.ContactInstantMessageField** field);
                [overload("CreateInstantMessage")] HRESULT CreateInstantMessage_Category([in] HSTRING userName, [in] Windows.ApplicationModel.Contacts.ContactFieldCategory category, [out] [retval] Windows.ApplicationModel.Contacts.ContactInstantMessageField** field);
                [overload("CreateInstantMessage")] HRESULT CreateInstantMessage_All([in] HSTRING userName, [in] Windows.ApplicationModel.Contacts.ContactFieldCategory category, [in] HSTRING service, [in] HSTRING displayText, [in] Windows.Foundation.Uri* verb, [out] [retval] Windows.ApplicationModel.Contacts.ContactInstantMessageField** field);
            }

            [activatable(Windows.ApplicationModel.Contacts.IContactFieldFactory, 0x06020000)]
            [version(0x06020000)]
            [marshaling_behavior(agile)]
            runtimeclass ContactField
            {
                [default] interface Windows.ApplicationModel.Contacts.IContactField;
            }

            [version(0x06020000)]
            [activatable(Windows.ApplicationModel.Contacts.IContactLocationFieldFactory, 0x06020000)]
            [marshaling_behavior(agile)]
            runtimeclass ContactLocationField
            {
                [default] interface Windows.ApplicationModel.Contacts.IContactLocationField;
                interface Windows.ApplicationModel.Contacts.IContactField;
            }

            [marshaling_behavior(agile)]
            [version(0x06020000)]
            [activatable(Windows.ApplicationModel.Contacts.IContactInstantMessageFieldFactory, 0x06020000)]
            runtimeclass ContactInstantMessageField
            {
                [default] interface Windows.ApplicationModel.Contacts.IContactInstantMessageField;
                interface Windows.ApplicationModel.Contacts.IContactField;
            }

            [marshaling_behavior(agile)]
            [version(0x06020000)]
            [static(Windows.ApplicationModel.Contacts.IKnownContactFieldStatics, 0x06020000)]
            runtimeclass KnownContactField
            {
            }

            [version(0x06020000)]
            runtimeclass ContactInformation
            {
                [default] interface Windows.ApplicationModel.Contacts.IContactInformation;
            }

            [version(0x06020000)]
            [activatable(0x06020000)]
            runtimeclass ContactPicker
            {
                [default] interface Windows.ApplicationModel.Contacts.IContactPicker;
            }

            [marshaling_behavior(standard)]
            [version(0x06020000)]
            [activatable(0x06020000)]
            runtimeclass Contact
            {
                [default] interface Windows.ApplicationModel.Contacts.IContact;
            }

            [activatable(0x06020000)]
            [version(0x06020000)]
            [marshaling_behavior(agile)]
            runtimeclass ContactFieldFactory
            {
                [default] interface Windows.ApplicationModel.Contacts.IContactFieldFactory;
                interface Windows.ApplicationModel.Contacts.IContactLocationFieldFactory;
                interface Windows.ApplicationModel.Contacts.IContactInstantMessageFieldFactory;
            }
        }
    }
}
