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

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "windowscontracts.idl";
import "Windows.Foundation.idl";
import "Windows.ApplicationModel.Contacts.idl";

// Forward Declare
namespace Windows
{
    namespace ApplicationModel
    {
        namespace Contacts
        {
            runtimeclass Contact;

            typedef enum ContactFieldType ContactFieldType;

            typedef enum ContactSelectionMode ContactSelectionMode;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace ApplicationModel
    {
        namespace Contacts
        {
            namespace Provider
            {
                typedef enum AddContactResult AddContactResult;

                interface IContactPickerUI;

                interface IContactPickerUI2;

                interface IContactRemovedEventArgs;

                runtimeclass ContactPickerUI;

                runtimeclass ContactRemovedEventArgs;
            }
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace ApplicationModel
    {
        namespace Contacts
        {
            namespace Provider
            {
                declare
                {
                    interface Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.Contacts.Provider.ContactPickerUI*, Windows.ApplicationModel.Contacts.Provider.ContactRemovedEventArgs*>;
                }
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace ApplicationModel
    {
        namespace Contacts
        {
            namespace Provider
            {
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                enum AddContactResult
                {
                    Added        = 0,
                    AlreadyAdded = 1,
                    Unavailable  = 2
                };

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.ApplicationModel.Contacts.Provider.ContactPickerUI)]
                [uuid(E2CC1366-CF66-43C4-A96A-A5A112DB4746)]
                interface IContactPickerUI : IInspectable
                {
                    [deprecated("AddContact may be altered or unavailable for releases after Windows 8.1. Instead, use AddContact without the ID.", deprecate, Windows.Foundation.UniversalApiContract, 1.0)] HRESULT AddContact([in] HSTRING id, [in] Windows.ApplicationModel.Contacts.Contact* contact, [out] [retval] Windows.ApplicationModel.Contacts.Provider.AddContactResult* result);
                    HRESULT RemoveContact([in] HSTRING id);
                    HRESULT ContainsContact([in] HSTRING id, [out] [retval] boolean* isContained);
                    [deprecated("DesiredFields may be altered or unavailable for releases after Windows 8.1. Instead, use DesiredFieldsWithContactFieldType.", deprecate, Windows.Foundation.UniversalApiContract, 1.0)] [propget] HRESULT DesiredFields([out] [retval] Windows.Foundation.Collections.IVectorView<HSTRING>** value);
                    [propget] HRESULT SelectionMode([out] [retval] Windows.ApplicationModel.Contacts.ContactSelectionMode* value);
                    [eventadd] HRESULT ContactRemoved([in] Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.Contacts.Provider.ContactPickerUI*, Windows.ApplicationModel.Contacts.Provider.ContactRemovedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT ContactRemoved([in] EventRegistrationToken token);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.ApplicationModel.Contacts.Provider.ContactPickerUI)]
                [uuid(6E449E28-7B25-4999-9B0B-875400A1E8C8)]
                interface IContactPickerUI2 : IInspectable
                {
                    HRESULT AddContact([in] Windows.ApplicationModel.Contacts.Contact* contact, [out] [retval] Windows.ApplicationModel.Contacts.Provider.AddContactResult* result);
                    [propget] HRESULT DesiredFieldsWithContactFieldType([out] [retval] Windows.Foundation.Collections.IVector<Windows.ApplicationModel.Contacts.ContactFieldType>** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                [exclusiveto(Windows.ApplicationModel.Contacts.Provider.ContactRemovedEventArgs)]
                [uuid(6F354338-3302-4D13-AD8D-ADCC0FF9E47C)]
                interface IContactRemovedEventArgs : IInspectable
                {
                    [propget] HRESULT Id([out] [retval] HSTRING* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                runtimeclass ContactPickerUI
                {
                    [default] interface Windows.ApplicationModel.Contacts.Provider.IContactPickerUI;
                    [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.ApplicationModel.Contacts.Provider.IContactPickerUI2;
                }

                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                runtimeclass ContactRemovedEventArgs
                {
                    [default] interface Windows.ApplicationModel.Contacts.Provider.IContactRemovedEventArgs;
                }
            }
        }
    }
}
