//
// 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.Storage.Streams.idl";

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

        runtimeclass Deferral;

        interface IAsyncAction;

        runtimeclass Uri;
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace Streams
        {
            interface IRandomAccessStreamReference;
        }
    }
}
namespace Windows
{
    namespace Services
    {
        namespace TargetedContent
        {
            apicontract TargetedContentContract;

            typedef enum TargetedContentAppInstallationState TargetedContentAppInstallationState;

            typedef enum TargetedContentAvailability TargetedContentAvailability;

            typedef enum TargetedContentInteraction TargetedContentInteraction;

            typedef enum TargetedContentObjectKind TargetedContentObjectKind;

            typedef enum TargetedContentValueKind TargetedContentValueKind;

            interface ITargetedContentAction;

            interface ITargetedContentAvailabilityChangedEventArgs;

            interface ITargetedContentChangedEventArgs;

            interface ITargetedContentCollection;

            interface ITargetedContentContainer;

            interface ITargetedContentContainerStatics;

            interface ITargetedContentImage;

            interface ITargetedContentItem;

            interface ITargetedContentItemState;

            interface ITargetedContentObject;

            interface ITargetedContentStateChangedEventArgs;

            interface ITargetedContentSubscription;

            interface ITargetedContentSubscriptionOptions;

            interface ITargetedContentSubscriptionStatics;

            interface ITargetedContentValue;

            runtimeclass TargetedContentAction;

            runtimeclass TargetedContentAvailabilityChangedEventArgs;

            runtimeclass TargetedContentChangedEventArgs;

            runtimeclass TargetedContentCollection;

            runtimeclass TargetedContentContainer;

            runtimeclass TargetedContentFile;

            runtimeclass TargetedContentImage;

            runtimeclass TargetedContentItem;

            runtimeclass TargetedContentItemState;

            runtimeclass TargetedContentObject;

            runtimeclass TargetedContentStateChangedEventArgs;

            runtimeclass TargetedContentSubscription;

            runtimeclass TargetedContentSubscriptionOptions;

            runtimeclass TargetedContentValue;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Services
    {
        namespace TargetedContent
        {
            declare
            {
                interface Windows.Foundation.Collections.IIterable<Windows.Foundation.Collections.IKeyValuePair<HSTRING, Windows.Services.TargetedContent.TargetedContentValue*>*>;

                interface Windows.Foundation.Collections.IIterable<Windows.Services.TargetedContent.TargetedContentAction*>;

                interface Windows.Foundation.Collections.IIterable<Windows.Services.TargetedContent.TargetedContentCollection*>;

                interface Windows.Foundation.Collections.IIterable<Windows.Services.TargetedContent.TargetedContentFile*>;

                interface Windows.Foundation.Collections.IIterable<Windows.Services.TargetedContent.TargetedContentImage*>;

                interface Windows.Foundation.Collections.IIterable<Windows.Services.TargetedContent.TargetedContentItem*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Foundation.Collections.IKeyValuePair<HSTRING, Windows.Services.TargetedContent.TargetedContentValue*>*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Services.TargetedContent.TargetedContentAction*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Services.TargetedContent.TargetedContentCollection*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Services.TargetedContent.TargetedContentFile*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Services.TargetedContent.TargetedContentImage*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Services.TargetedContent.TargetedContentItem*>;

                interface Windows.Foundation.Collections.IKeyValuePair<HSTRING, Windows.Services.TargetedContent.TargetedContentValue*>;

                interface Windows.Foundation.Collections.IMapView<HSTRING, Windows.Services.TargetedContent.TargetedContentValue*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Services.TargetedContent.TargetedContentAction*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Services.TargetedContent.TargetedContentCollection*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Services.TargetedContent.TargetedContentFile*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Services.TargetedContent.TargetedContentImage*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Services.TargetedContent.TargetedContentItem*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Services.TargetedContent.TargetedContentContainer*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Services.TargetedContent.TargetedContentSubscription*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Services.TargetedContent.TargetedContentSubscription*, Windows.Services.TargetedContent.TargetedContentAvailabilityChangedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Services.TargetedContent.TargetedContentSubscription*, Windows.Services.TargetedContent.TargetedContentChangedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Services.TargetedContent.TargetedContentSubscription*, Windows.Services.TargetedContent.TargetedContentStateChangedEventArgs*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Services
    {
        namespace TargetedContent
        {
            [contractversion(1.0)]
            apicontract TargetedContentContract
            {
            }

            [contract(Windows.Services.TargetedContent.TargetedContentContract, 1.0)]
            enum TargetedContentAppInstallationState
            {
                NotApplicable = 0,
                NotInstalled  = 1,
                Installed     = 2
            };

            [contract(Windows.Services.TargetedContent.TargetedContentContract, 1.0)]
            enum TargetedContentAvailability
            {
                None    = 0,
                Partial = 1,
                All     = 2
            };

            [contract(Windows.Services.TargetedContent.TargetedContentContract, 1.0)]
            enum TargetedContentInteraction
            {
                Impression   = 0,
                ClickThrough = 1,
                Hover        = 2,
                Like         = 3,
                Dislike      = 4,
                Dismiss      = 5,
                Ineligible   = 6,
                Accept       = 7,
                Decline      = 8,
                Defer        = 9,
                Canceled     = 10,
                Conversion   = 11,
                Opportunity  = 12
            };

            [contract(Windows.Services.TargetedContent.TargetedContentContract, 1.0)]
            enum TargetedContentObjectKind
            {
                Collection = 0,
                Item       = 1,
                Value      = 2
            };

            [contract(Windows.Services.TargetedContent.TargetedContentContract, 1.0)]
            enum TargetedContentValueKind
            {
                String     = 0,
                Uri        = 1,
                Number     = 2,
                Boolean    = 3,
                File       = 4,
                ImageFile  = 5,
                Action     = 6,
                Strings    = 7,
                Uris       = 8,
                Numbers    = 9,
                Booleans   = 10,
                Files      = 11,
                ImageFiles = 12,
                Actions    = 13
            };

            [contract(Windows.Services.TargetedContent.TargetedContentContract, 1.0)]
            [exclusiveto(Windows.Services.TargetedContent.TargetedContentAction)]
            [uuid(D75B691E-6CD6-4CA0-9D8F-4728B0B7E6B6)]
            interface ITargetedContentAction : IInspectable
            {
                HRESULT InvokeAsync([out] [retval] Windows.Foundation.IAsyncAction** asyncAction);
            }

            [contract(Windows.Services.TargetedContent.TargetedContentContract, 1.0)]
            [exclusiveto(Windows.Services.TargetedContent.TargetedContentAvailabilityChangedEventArgs)]
            [uuid(E0F59D26-5927-4450-965C-1CEB7BECDE65)]
            interface ITargetedContentAvailabilityChangedEventArgs : IInspectable
            {
                HRESULT GetDeferral([out] [retval] Windows.Foundation.Deferral** value);
            }

            [contract(Windows.Services.TargetedContent.TargetedContentContract, 1.0)]
            [exclusiveto(Windows.Services.TargetedContent.TargetedContentChangedEventArgs)]
            [uuid(99D488C9-587E-4586-8EF7-B54CA9453A16)]
            interface ITargetedContentChangedEventArgs : IInspectable
            {
                HRESULT GetDeferral([out] [retval] Windows.Foundation.Deferral** value);
                [propget] HRESULT HasPreviousContentExpired([out] [retval] boolean* value);
            }

            [contract(Windows.Services.TargetedContent.TargetedContentContract, 1.0)]
            [exclusiveto(Windows.Services.TargetedContent.TargetedContentCollection)]
            [uuid(2D4B66C5-F163-44BA-9F6E-E1A4C2BB559D)]
            interface ITargetedContentCollection : IInspectable
            {
                [propget] HRESULT Id([out] [retval] HSTRING* value);
                HRESULT ReportInteraction([in] Windows.Services.TargetedContent.TargetedContentInteraction interaction);
                HRESULT ReportCustomInteraction([in] HSTRING customInteractionName);
                [propget] HRESULT Path([out] [retval] HSTRING* value);
                [propget] HRESULT Properties([out] [retval] Windows.Foundation.Collections.IMapView<HSTRING, Windows.Services.TargetedContent.TargetedContentValue*>** value);
                [propget] HRESULT Collections([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Services.TargetedContent.TargetedContentCollection*>** value);
                [propget] HRESULT Items([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Services.TargetedContent.TargetedContentItem*>** value);
            }

            [contract(Windows.Services.TargetedContent.TargetedContentContract, 1.0)]
            [exclusiveto(Windows.Services.TargetedContent.TargetedContentContainer)]
            [uuid(BC2494C9-8837-47C2-850F-D79D64595926)]
            interface ITargetedContentContainer : IInspectable
            {
                [propget] HRESULT Id([out] [retval] HSTRING* value);
                [propget] HRESULT Timestamp([out] [retval] Windows.Foundation.DateTime* value);
                [propget] HRESULT Availability([out] [retval] Windows.Services.TargetedContent.TargetedContentAvailability* value);
                [propget] HRESULT Content([out] [retval] Windows.Services.TargetedContent.TargetedContentCollection** value);
                HRESULT SelectSingleObject([in] HSTRING path, [out] [retval] Windows.Services.TargetedContent.TargetedContentObject** value);
            }

            [contract(Windows.Services.TargetedContent.TargetedContentContract, 1.0)]
            [exclusiveto(Windows.Services.TargetedContent.TargetedContentContainer)]
            [uuid(5B47E7FB-2140-4C1F-A736-C59583F227D8)]
            interface ITargetedContentContainerStatics : IInspectable
            {
                HRESULT GetAsync([in] HSTRING contentId, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Services.TargetedContent.TargetedContentContainer*>** asyncOperation);
            }

            [contract(Windows.Services.TargetedContent.TargetedContentContract, 1.0)]
            [exclusiveto(Windows.Services.TargetedContent.TargetedContentImage)]
            [uuid(A7A585D9-779F-4B1E-BBB1-8EAF53FBEAB2)]
            interface ITargetedContentImage : IInspectable
                requires
                    Windows.Storage.Streams.IRandomAccessStreamReference
            {
                [propget] HRESULT Height([out] [retval] UINT32* value);
                [propget] HRESULT Width([out] [retval] UINT32* value);
            }

            [contract(Windows.Services.TargetedContent.TargetedContentContract, 1.0)]
            [exclusiveto(Windows.Services.TargetedContent.TargetedContentItem)]
            [uuid(38168DC4-276C-4C32-96BA-565C6E406E74)]
            interface ITargetedContentItem : IInspectable
            {
                [propget] HRESULT Path([out] [retval] HSTRING* value);
                HRESULT ReportInteraction([in] Windows.Services.TargetedContent.TargetedContentInteraction interaction);
                HRESULT ReportCustomInteraction([in] HSTRING customInteractionName);
                [propget] HRESULT State([out] [retval] Windows.Services.TargetedContent.TargetedContentItemState** value);
                [propget] HRESULT Properties([out] [retval] Windows.Foundation.Collections.IMapView<HSTRING, Windows.Services.TargetedContent.TargetedContentValue*>** value);
                [propget] HRESULT Collections([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Services.TargetedContent.TargetedContentCollection*>** value);
            }

            [contract(Windows.Services.TargetedContent.TargetedContentContract, 1.0)]
            [exclusiveto(Windows.Services.TargetedContent.TargetedContentItemState)]
            [uuid(73935454-4C65-4B47-A441-472DE53C79B6)]
            interface ITargetedContentItemState : IInspectable
            {
                [propget] HRESULT ShouldDisplay([out] [retval] boolean* value);
                [propget] HRESULT AppInstallationState([out] [retval] Windows.Services.TargetedContent.TargetedContentAppInstallationState* value);
            }

            [contract(Windows.Services.TargetedContent.TargetedContentContract, 1.0)]
            [exclusiveto(Windows.Services.TargetedContent.TargetedContentObject)]
            [uuid(041D7969-2212-42D1-9DFA-88A8E3033AA3)]
            interface ITargetedContentObject : IInspectable
            {
                [propget] HRESULT ObjectKind([out] [retval] Windows.Services.TargetedContent.TargetedContentObjectKind* value);
                [propget] HRESULT Collection([out] [retval] Windows.Services.TargetedContent.TargetedContentCollection** value);
                [propget] HRESULT Item([out] [retval] Windows.Services.TargetedContent.TargetedContentItem** value);
                [propget] HRESULT Value([out] [retval] Windows.Services.TargetedContent.TargetedContentValue** value);
            }

            [contract(Windows.Services.TargetedContent.TargetedContentContract, 1.0)]
            [exclusiveto(Windows.Services.TargetedContent.TargetedContentStateChangedEventArgs)]
            [uuid(9A1CEF3D-8073-4416-8DF2-546835A6414F)]
            interface ITargetedContentStateChangedEventArgs : IInspectable
            {
                HRESULT GetDeferral([out] [retval] Windows.Foundation.Deferral** value);
            }

            [contract(Windows.Services.TargetedContent.TargetedContentContract, 1.0)]
            [exclusiveto(Windows.Services.TargetedContent.TargetedContentSubscription)]
            [uuid(882C2C49-C652-4C7A-ACAD-1F7FA2986C73)]
            interface ITargetedContentSubscription : IInspectable
            {
                [propget] HRESULT Id([out] [retval] HSTRING* value);
                HRESULT GetContentContainerAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Services.TargetedContent.TargetedContentContainer*>** asyncOperation);
                [eventadd] HRESULT ContentChanged([in] Windows.Foundation.TypedEventHandler<Windows.Services.TargetedContent.TargetedContentSubscription*, Windows.Services.TargetedContent.TargetedContentChangedEventArgs*>* handler, [out] [retval] EventRegistrationToken* cookie);
                [eventremove] HRESULT ContentChanged([in] EventRegistrationToken cookie);
                [eventadd] HRESULT AvailabilityChanged([in] Windows.Foundation.TypedEventHandler<Windows.Services.TargetedContent.TargetedContentSubscription*, Windows.Services.TargetedContent.TargetedContentAvailabilityChangedEventArgs*>* handler, [out] [retval] EventRegistrationToken* cookie);
                [eventremove] HRESULT AvailabilityChanged([in] EventRegistrationToken cookie);
                [eventadd] HRESULT StateChanged([in] Windows.Foundation.TypedEventHandler<Windows.Services.TargetedContent.TargetedContentSubscription*, Windows.Services.TargetedContent.TargetedContentStateChangedEventArgs*>* handler, [out] [retval] EventRegistrationToken* cookie);
                [eventremove] HRESULT StateChanged([in] EventRegistrationToken cookie);
            }

            [contract(Windows.Services.TargetedContent.TargetedContentContract, 1.0)]
            [exclusiveto(Windows.Services.TargetedContent.TargetedContentSubscriptionOptions)]
            [uuid(61EE6AD0-2C83-421B-8467-413EAF1AEB97)]
            interface ITargetedContentSubscriptionOptions : IInspectable
            {
                [propget] HRESULT SubscriptionId([out] [retval] HSTRING* value);
                [propget] HRESULT AllowPartialContentAvailability([out] [retval] boolean* value);
                [propput] HRESULT AllowPartialContentAvailability([in] boolean value);
                [propget] HRESULT CloudQueryParameters([out] [retval] Windows.Foundation.Collections.IMap<HSTRING, HSTRING>** value);
                [propget] HRESULT LocalFilters([out] [retval] Windows.Foundation.Collections.IVector<HSTRING>** value);
                HRESULT Update();
            }

            [contract(Windows.Services.TargetedContent.TargetedContentContract, 1.0)]
            [exclusiveto(Windows.Services.TargetedContent.TargetedContentSubscription)]
            [uuid(FADDFE80-360D-4916-B53C-7EA27090D02A)]
            interface ITargetedContentSubscriptionStatics : IInspectable
            {
                HRESULT GetAsync([in] HSTRING subscriptionId, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Services.TargetedContent.TargetedContentSubscription*>** asyncOperation);
                HRESULT GetOptions([in] HSTRING subscriptionId, [out] [retval] Windows.Services.TargetedContent.TargetedContentSubscriptionOptions** value);
            }

            [contract(Windows.Services.TargetedContent.TargetedContentContract, 1.0)]
            [exclusiveto(Windows.Services.TargetedContent.TargetedContentValue)]
            [uuid(AAFDE4B3-4215-4BF8-867F-43F04865F9BF)]
            interface ITargetedContentValue : IInspectable
            {
                [propget] HRESULT ValueKind([out] [retval] Windows.Services.TargetedContent.TargetedContentValueKind* value);
                [propget] HRESULT Path([out] [retval] HSTRING* value);
                [propget] HRESULT String([out] [retval] HSTRING* value);
                [propget] HRESULT Uri([out] [retval] Windows.Foundation.Uri** value);
                [propget] HRESULT Number([out] [retval] DOUBLE* value);
                [propget] HRESULT Boolean([out] [retval] boolean* value);
                [propget] HRESULT File([out] [retval] Windows.Services.TargetedContent.TargetedContentFile** value);
                [propget] HRESULT ImageFile([out] [retval] Windows.Services.TargetedContent.TargetedContentImage** value);
                [propget] HRESULT Action([out] [retval] Windows.Services.TargetedContent.TargetedContentAction** value);
                [propget] HRESULT Strings([out] [retval] Windows.Foundation.Collections.IVectorView<HSTRING>** value);
                [propget] HRESULT Uris([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Foundation.Uri*>** value);
                [propget] HRESULT Numbers([out] [retval] Windows.Foundation.Collections.IVectorView<DOUBLE>** value);
                [propget] HRESULT Booleans([out] [retval] Windows.Foundation.Collections.IVectorView<boolean>** value);
                [propget] HRESULT Files([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Services.TargetedContent.TargetedContentFile*>** value);
                [propget] HRESULT ImageFiles([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Services.TargetedContent.TargetedContentImage*>** value);
                [propget] HRESULT Actions([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Services.TargetedContent.TargetedContentAction*>** value);
            }

            [contract(Windows.Services.TargetedContent.TargetedContentContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass TargetedContentAction
            {
                [default] interface Windows.Services.TargetedContent.ITargetedContentAction;
            }

            [contract(Windows.Services.TargetedContent.TargetedContentContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass TargetedContentAvailabilityChangedEventArgs
            {
                [default] interface Windows.Services.TargetedContent.ITargetedContentAvailabilityChangedEventArgs;
            }

            [contract(Windows.Services.TargetedContent.TargetedContentContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass TargetedContentChangedEventArgs
            {
                [default] interface Windows.Services.TargetedContent.ITargetedContentChangedEventArgs;
            }

            [contract(Windows.Services.TargetedContent.TargetedContentContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass TargetedContentCollection
            {
                [default] interface Windows.Services.TargetedContent.ITargetedContentCollection;
            }

            [contract(Windows.Services.TargetedContent.TargetedContentContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Services.TargetedContent.ITargetedContentContainerStatics, Windows.Services.TargetedContent.TargetedContentContract, 1.0)]
            [threading(both)]
            runtimeclass TargetedContentContainer
            {
                [default] interface Windows.Services.TargetedContent.ITargetedContentContainer;
            }

            [contract(Windows.Services.TargetedContent.TargetedContentContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass TargetedContentFile
            {
                [default] interface Windows.Storage.Streams.IRandomAccessStreamReference;
            }

            [contract(Windows.Services.TargetedContent.TargetedContentContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass TargetedContentImage
            {
                [default] interface Windows.Services.TargetedContent.ITargetedContentImage;
                interface Windows.Storage.Streams.IRandomAccessStreamReference;
            }

            [contract(Windows.Services.TargetedContent.TargetedContentContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass TargetedContentItem
            {
                [default] interface Windows.Services.TargetedContent.ITargetedContentItem;
            }

            [contract(Windows.Services.TargetedContent.TargetedContentContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass TargetedContentItemState
            {
                [default] interface Windows.Services.TargetedContent.ITargetedContentItemState;
            }

            [contract(Windows.Services.TargetedContent.TargetedContentContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass TargetedContentObject
            {
                [default] interface Windows.Services.TargetedContent.ITargetedContentObject;
            }

            [contract(Windows.Services.TargetedContent.TargetedContentContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass TargetedContentStateChangedEventArgs
            {
                [default] interface Windows.Services.TargetedContent.ITargetedContentStateChangedEventArgs;
            }

            [contract(Windows.Services.TargetedContent.TargetedContentContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Services.TargetedContent.ITargetedContentSubscriptionStatics, Windows.Services.TargetedContent.TargetedContentContract, 1.0)]
            [threading(both)]
            runtimeclass TargetedContentSubscription
            {
                [default] interface Windows.Services.TargetedContent.ITargetedContentSubscription;
            }

            [contract(Windows.Services.TargetedContent.TargetedContentContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass TargetedContentSubscriptionOptions
            {
                [default] interface Windows.Services.TargetedContent.ITargetedContentSubscriptionOptions;
            }

            [contract(Windows.Services.TargetedContent.TargetedContentContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass TargetedContentValue
            {
                [default] interface Windows.Services.TargetedContent.ITargetedContentValue;
            }
        }
    }
}
