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

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 ContactBatchStatus ContactBatchStatus;

            runtimeclass ContactQueryOptions;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        runtimeclass Deferral;

        interface IAsyncAction;

        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace ApplicationModel
    {
        namespace Contacts
        {
            namespace DataProvider
            {
                interface IContactDataProviderConnection;

                interface IContactDataProviderConnection2;

                interface IContactDataProviderTriggerDetails;

                interface IContactListCreateOrUpdateContactRequest;

                interface IContactListCreateOrUpdateContactRequestEventArgs;

                interface IContactListDeleteContactRequest;

                interface IContactListDeleteContactRequestEventArgs;

                interface IContactListServerSearchReadBatchRequest;

                interface IContactListServerSearchReadBatchRequestEventArgs;

                interface IContactListSyncManagerSyncRequest;

                interface IContactListSyncManagerSyncRequestEventArgs;

                runtimeclass ContactDataProviderConnection;

                runtimeclass ContactDataProviderTriggerDetails;

                runtimeclass ContactListCreateOrUpdateContactRequest;

                runtimeclass ContactListCreateOrUpdateContactRequestEventArgs;

                runtimeclass ContactListDeleteContactRequest;

                runtimeclass ContactListDeleteContactRequestEventArgs;

                runtimeclass ContactListServerSearchReadBatchRequest;

                runtimeclass ContactListServerSearchReadBatchRequestEventArgs;

                runtimeclass ContactListSyncManagerSyncRequest;

                runtimeclass ContactListSyncManagerSyncRequestEventArgs;
            }
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace ApplicationModel
    {
        namespace Contacts
        {
            namespace DataProvider
            {
                declare
                {
                    interface Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.Contacts.DataProvider.ContactDataProviderConnection*, Windows.ApplicationModel.Contacts.DataProvider.ContactListCreateOrUpdateContactRequestEventArgs*>;

                    interface Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.Contacts.DataProvider.ContactDataProviderConnection*, Windows.ApplicationModel.Contacts.DataProvider.ContactListDeleteContactRequestEventArgs*>;

                    interface Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.Contacts.DataProvider.ContactDataProviderConnection*, Windows.ApplicationModel.Contacts.DataProvider.ContactListServerSearchReadBatchRequestEventArgs*>;

                    interface Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.Contacts.DataProvider.ContactDataProviderConnection*, Windows.ApplicationModel.Contacts.DataProvider.ContactListSyncManagerSyncRequestEventArgs*>;
                }
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace ApplicationModel
    {
        namespace Contacts
        {
            namespace DataProvider
            {
                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [exclusiveto(Windows.ApplicationModel.Contacts.DataProvider.ContactDataProviderConnection)]
                [uuid(1A398A52-8C9D-4D6F-A4E0-111E9A125A30)]
                interface IContactDataProviderConnection : IInspectable
                {
                    [eventadd] HRESULT SyncRequested([in] Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.Contacts.DataProvider.ContactDataProviderConnection*, Windows.ApplicationModel.Contacts.DataProvider.ContactListSyncManagerSyncRequestEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT SyncRequested([in] EventRegistrationToken token);
                    [eventadd] HRESULT ServerSearchReadBatchRequested([in] Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.Contacts.DataProvider.ContactDataProviderConnection*, Windows.ApplicationModel.Contacts.DataProvider.ContactListServerSearchReadBatchRequestEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT ServerSearchReadBatchRequested([in] EventRegistrationToken token);
                    HRESULT Start();
                }

                [contract(Windows.Foundation.UniversalApiContract, 5.0)]
                [exclusiveto(Windows.ApplicationModel.Contacts.DataProvider.ContactDataProviderConnection)]
                [uuid(A1D327B0-196C-4BFD-8F0F-C68D67F249D3)]
                interface IContactDataProviderConnection2 : IInspectable
                {
                    [eventadd] HRESULT CreateOrUpdateContactRequested([in] Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.Contacts.DataProvider.ContactDataProviderConnection*, Windows.ApplicationModel.Contacts.DataProvider.ContactListCreateOrUpdateContactRequestEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT CreateOrUpdateContactRequested([in] EventRegistrationToken token);
                    [eventadd] HRESULT DeleteContactRequested([in] Windows.Foundation.TypedEventHandler<Windows.ApplicationModel.Contacts.DataProvider.ContactDataProviderConnection*, Windows.ApplicationModel.Contacts.DataProvider.ContactListDeleteContactRequestEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT DeleteContactRequested([in] EventRegistrationToken token);
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [exclusiveto(Windows.ApplicationModel.Contacts.DataProvider.ContactDataProviderTriggerDetails)]
                [uuid(527104BE-3C62-43C8-9AE7-DB531685CD99)]
                interface IContactDataProviderTriggerDetails : IInspectable
                {
                    [propget] HRESULT Connection([out] [retval] Windows.ApplicationModel.Contacts.DataProvider.ContactDataProviderConnection** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 5.0)]
                [exclusiveto(Windows.ApplicationModel.Contacts.DataProvider.ContactListCreateOrUpdateContactRequest)]
                [uuid(B4AF411F-C849-47D0-B119-91CF605B2F2A)]
                interface IContactListCreateOrUpdateContactRequest : IInspectable
                {
                    [propget] HRESULT ContactListId([out] [retval] HSTRING* value);
                    [propget] HRESULT Contact([out] [retval] Windows.ApplicationModel.Contacts.Contact** value);
                    HRESULT ReportCompletedAsync([in] Windows.ApplicationModel.Contacts.Contact* createdOrUpdatedContact, [out] [retval] Windows.Foundation.IAsyncAction** result);
                    HRESULT ReportFailedAsync([out] [retval] Windows.Foundation.IAsyncAction** result);
                }

                [contract(Windows.Foundation.UniversalApiContract, 5.0)]
                [exclusiveto(Windows.ApplicationModel.Contacts.DataProvider.ContactListCreateOrUpdateContactRequestEventArgs)]
                [uuid(851C1690-1A51-4B0C-AEEF-1240AC5BED75)]
                interface IContactListCreateOrUpdateContactRequestEventArgs : IInspectable
                {
                    [propget] HRESULT Request([out] [retval] Windows.ApplicationModel.Contacts.DataProvider.ContactListCreateOrUpdateContactRequest** value);
                    HRESULT GetDeferral([out] [retval] Windows.Foundation.Deferral** result);
                }

                [contract(Windows.Foundation.UniversalApiContract, 5.0)]
                [exclusiveto(Windows.ApplicationModel.Contacts.DataProvider.ContactListDeleteContactRequest)]
                [uuid(5E114687-CE03-4DE5-8557-9CCF552D472A)]
                interface IContactListDeleteContactRequest : IInspectable
                {
                    [propget] HRESULT ContactListId([out] [retval] HSTRING* value);
                    [propget] HRESULT ContactId([out] [retval] HSTRING* value);
                    HRESULT ReportCompletedAsync([out] [retval] Windows.Foundation.IAsyncAction** result);
                    HRESULT ReportFailedAsync([out] [retval] Windows.Foundation.IAsyncAction** result);
                }

                [contract(Windows.Foundation.UniversalApiContract, 5.0)]
                [exclusiveto(Windows.ApplicationModel.Contacts.DataProvider.ContactListDeleteContactRequestEventArgs)]
                [uuid(B22054A1-E8FA-4DB5-9389-2D12EE7D15EE)]
                interface IContactListDeleteContactRequestEventArgs : IInspectable
                {
                    [propget] HRESULT Request([out] [retval] Windows.ApplicationModel.Contacts.DataProvider.ContactListDeleteContactRequest** value);
                    HRESULT GetDeferral([out] [retval] Windows.Foundation.Deferral** result);
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [exclusiveto(Windows.ApplicationModel.Contacts.DataProvider.ContactListServerSearchReadBatchRequest)]
                [uuid(BA776A97-4030-4925-9FB4-143B295E653B)]
                interface IContactListServerSearchReadBatchRequest : IInspectable
                {
                    [propget] HRESULT SessionId([out] [retval] HSTRING* value);
                    [propget] HRESULT ContactListId([out] [retval] HSTRING* value);
                    [propget] HRESULT Options([out] [retval] Windows.ApplicationModel.Contacts.ContactQueryOptions** value);
                    [propget] HRESULT SuggestedBatchSize([out] [retval] UINT32* value);
                    HRESULT SaveContactAsync([in] Windows.ApplicationModel.Contacts.Contact* contact, [out] [retval] Windows.Foundation.IAsyncAction** result);
                    HRESULT ReportCompletedAsync([out] [retval] Windows.Foundation.IAsyncAction** result);
                    HRESULT ReportFailedAsync([in] Windows.ApplicationModel.Contacts.ContactBatchStatus batchStatus, [out] [retval] Windows.Foundation.IAsyncAction** result);
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [exclusiveto(Windows.ApplicationModel.Contacts.DataProvider.ContactListServerSearchReadBatchRequestEventArgs)]
                [uuid(1A27E87B-69D7-4E4E-8042-861CBA61471E)]
                interface IContactListServerSearchReadBatchRequestEventArgs : IInspectable
                {
                    [propget] HRESULT Request([out] [retval] Windows.ApplicationModel.Contacts.DataProvider.ContactListServerSearchReadBatchRequest** value);
                    HRESULT GetDeferral([out] [retval] Windows.Foundation.Deferral** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [exclusiveto(Windows.ApplicationModel.Contacts.DataProvider.ContactListSyncManagerSyncRequest)]
                [uuid(3C0E57A4-C4E7-4970-9A8F-9A66A2BB6C1A)]
                interface IContactListSyncManagerSyncRequest : IInspectable
                {
                    [propget] HRESULT ContactListId([out] [retval] HSTRING* value);
                    HRESULT ReportCompletedAsync([out] [retval] Windows.Foundation.IAsyncAction** result);
                    HRESULT ReportFailedAsync([out] [retval] Windows.Foundation.IAsyncAction** result);
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [exclusiveto(Windows.ApplicationModel.Contacts.DataProvider.ContactListSyncManagerSyncRequestEventArgs)]
                [uuid(158E4DAC-446D-4F10-AFC2-02683EC533A6)]
                interface IContactListSyncManagerSyncRequestEventArgs : IInspectable
                {
                    [propget] HRESULT Request([out] [retval] Windows.ApplicationModel.Contacts.DataProvider.ContactListSyncManagerSyncRequest** value);
                    HRESULT GetDeferral([out] [retval] Windows.Foundation.Deferral** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass ContactDataProviderConnection
                {
                    [default] interface Windows.ApplicationModel.Contacts.DataProvider.IContactDataProviderConnection;
                    [contract(Windows.Foundation.UniversalApiContract, 5.0)] interface Windows.ApplicationModel.Contacts.DataProvider.IContactDataProviderConnection2;
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass ContactDataProviderTriggerDetails
                {
                    [default] interface Windows.ApplicationModel.Contacts.DataProvider.IContactDataProviderTriggerDetails;
                }

                [contract(Windows.Foundation.UniversalApiContract, 5.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass ContactListCreateOrUpdateContactRequest
                {
                    [default] interface Windows.ApplicationModel.Contacts.DataProvider.IContactListCreateOrUpdateContactRequest;
                }

                [contract(Windows.Foundation.UniversalApiContract, 5.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass ContactListCreateOrUpdateContactRequestEventArgs
                {
                    [default] interface Windows.ApplicationModel.Contacts.DataProvider.IContactListCreateOrUpdateContactRequestEventArgs;
                }

                [contract(Windows.Foundation.UniversalApiContract, 5.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass ContactListDeleteContactRequest
                {
                    [default] interface Windows.ApplicationModel.Contacts.DataProvider.IContactListDeleteContactRequest;
                }

                [contract(Windows.Foundation.UniversalApiContract, 5.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass ContactListDeleteContactRequestEventArgs
                {
                    [default] interface Windows.ApplicationModel.Contacts.DataProvider.IContactListDeleteContactRequestEventArgs;
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass ContactListServerSearchReadBatchRequest
                {
                    [default] interface Windows.ApplicationModel.Contacts.DataProvider.IContactListServerSearchReadBatchRequest;
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass ContactListServerSearchReadBatchRequestEventArgs
                {
                    [default] interface Windows.ApplicationModel.Contacts.DataProvider.IContactListServerSearchReadBatchRequestEventArgs;
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass ContactListSyncManagerSyncRequest
                {
                    [default] interface Windows.ApplicationModel.Contacts.DataProvider.IContactListSyncManagerSyncRequest;
                }

                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass ContactListSyncManagerSyncRequestEventArgs
                {
                    [default] interface Windows.ApplicationModel.Contacts.DataProvider.IContactListSyncManagerSyncRequestEventArgs;
                }
            }
        }
    }
}
