//
// 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";

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        runtimeclass Uri;
    }
}
namespace Windows
{
    namespace ApplicationModel
    {
        namespace Resources
        {
            namespace Management
            {
                apicontract ResourceIndexerContract;

                typedef enum IndexedResourceType IndexedResourceType;

                interface IIndexedResourceCandidate;

                interface IIndexedResourceQualifier;

                interface IResourceIndexer;

                interface IResourceIndexerFactory;

                interface IResourceIndexerFactory2;

                runtimeclass IndexedResourceCandidate;

                runtimeclass IndexedResourceQualifier;

                runtimeclass ResourceIndexer;
            }
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace ApplicationModel
    {
        namespace Resources
        {
            namespace Management
            {
                declare
                {
                    interface Windows.Foundation.Collections.IIterable<Windows.ApplicationModel.Resources.Management.IndexedResourceCandidate*>;

                    interface Windows.Foundation.Collections.IIterable<Windows.ApplicationModel.Resources.Management.IndexedResourceQualifier*>;

                    interface Windows.Foundation.Collections.IIterator<Windows.ApplicationModel.Resources.Management.IndexedResourceCandidate*>;

                    interface Windows.Foundation.Collections.IIterator<Windows.ApplicationModel.Resources.Management.IndexedResourceQualifier*>;

                    interface Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Resources.Management.IndexedResourceCandidate*>;

                    interface Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Resources.Management.IndexedResourceQualifier*>;

                    interface Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Resources.Management.IndexedResourceCandidate*>*>;
                }
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace ApplicationModel
    {
        namespace Resources
        {
            namespace Management
            {
                [contractversion(2.0)]
                apicontract ResourceIndexerContract
                {
                }

                [contract(Windows.ApplicationModel.Resources.Management.ResourceIndexerContract, 1.0)]
                enum IndexedResourceType
                {
                    String       = 0,
                    Path         = 1,
                    EmbeddedData = 2
                };

                [contract(Windows.ApplicationModel.Resources.Management.ResourceIndexerContract, 1.0)]
                [exclusiveto(Windows.ApplicationModel.Resources.Management.IndexedResourceCandidate)]
                [uuid(0E619EF3-FAEC-4414-A9D7-54ACD5953F29)]
                interface IIndexedResourceCandidate : IInspectable
                {
                    [propget] HRESULT Type([out] [retval] Windows.ApplicationModel.Resources.Management.IndexedResourceType* value);
                    [propget] HRESULT Uri([out] [retval] Windows.Foundation.Uri** value);
                    [propget] HRESULT Metadata([out] [retval] Windows.Foundation.Collections.IMapView<HSTRING, HSTRING>** value);
                    [propget] HRESULT Qualifiers([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Resources.Management.IndexedResourceQualifier*>** value);
                    [propget] HRESULT ValueAsString([out] [retval] HSTRING* value);
                    HRESULT GetQualifierValue([in] HSTRING qualifierName, [out] [retval] HSTRING* qualifierValue);
                }

                [contract(Windows.ApplicationModel.Resources.Management.ResourceIndexerContract, 1.0)]
                [exclusiveto(Windows.ApplicationModel.Resources.Management.IndexedResourceQualifier)]
                [uuid(DAE3BB9B-D304-497F-A168-A340042C8ADB)]
                interface IIndexedResourceQualifier : IInspectable
                {
                    [propget] HRESULT QualifierName([out] [retval] HSTRING* value);
                    [propget] HRESULT QualifierValue([out] [retval] HSTRING* value);
                }

                [contract(Windows.ApplicationModel.Resources.Management.ResourceIndexerContract, 1.0)]
                [deprecated("Use IndexFilePath in mrmsupport.dll instead of IResourceIndexer.  For more info, see MSDN.", deprecate, Windows.ApplicationModel.Resources.Management.ResourceIndexerContract, 2.0)]
                [exclusiveto(Windows.ApplicationModel.Resources.Management.ResourceIndexer)]
                [uuid(2D4CF9A5-E32F-4AB2-8748-96350A016DA3)]
                interface IResourceIndexer : IInspectable
                {
                    [deprecated("Use IndexFilePath in mrmsupport.dll instead of IResourceIndexer.  For more info, see MSDN.", deprecate, Windows.ApplicationModel.Resources.Management.ResourceIndexerContract, 2.0)] HRESULT IndexFilePath([in] Windows.Foundation.Uri* filePath, [out] [retval] Windows.ApplicationModel.Resources.Management.IndexedResourceCandidate** candidate);
                    [deprecated("Use IndexFilePath in mrmsupport.dll instead of IResourceIndexer.  For more info, see MSDN.", deprecate, Windows.ApplicationModel.Resources.Management.ResourceIndexerContract, 2.0)] HRESULT IndexFileContentsAsync([in] Windows.Foundation.Uri* file, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.ApplicationModel.Resources.Management.IndexedResourceCandidate*>*>** operation);
                }

                [contract(Windows.ApplicationModel.Resources.Management.ResourceIndexerContract, 1.0)]
                [deprecated("Use CreateResourceIndexer in mrmsupport.dll instead of IResourceIndexerFactory.  For more info, see MSDN.", deprecate, Windows.ApplicationModel.Resources.Management.ResourceIndexerContract, 2.0)]
                [exclusiveto(Windows.ApplicationModel.Resources.Management.ResourceIndexer)]
                [uuid(B8DE3F09-31CD-4D97-BD30-8D39F742BC61)]
                interface IResourceIndexerFactory : IInspectable
                {
                    [deprecated("Use CreateResourceIndexer in mrmsupport.dll instead of IResourceIndexerFactory.  For more info, see MSDN.", deprecate, Windows.ApplicationModel.Resources.Management.ResourceIndexerContract, 2.0)] HRESULT CreateResourceIndexer([in] Windows.Foundation.Uri* projectRoot, [out] [retval] Windows.ApplicationModel.Resources.Management.ResourceIndexer** indexer);
                }

                [contract(Windows.ApplicationModel.Resources.Management.ResourceIndexerContract, 1.0)]
                [deprecated("Use CreateResourceIndexer in mrmsupport.dll instead of IResourceIndexerFactory2.  For more info, see MSDN.", deprecate, Windows.ApplicationModel.Resources.Management.ResourceIndexerContract, 2.0)]
                [exclusiveto(Windows.ApplicationModel.Resources.Management.ResourceIndexer)]
                [uuid(6040F18D-D5E5-4B60-9201-CD279CBCFED9)]
                interface IResourceIndexerFactory2 : IInspectable
                {
                    [deprecated("Use CreateResourceIndexer in mrmsupport.dll instead of IResourceIndexerFactory2.  For more info, see MSDN.", deprecate, Windows.ApplicationModel.Resources.Management.ResourceIndexerContract, 2.0)] HRESULT CreateResourceIndexerWithExtension([in] Windows.Foundation.Uri* projectRoot, [in] Windows.Foundation.Uri* extensionDllPath, [out] [retval] Windows.ApplicationModel.Resources.Management.ResourceIndexer** indexer);
                }

                [contract(Windows.ApplicationModel.Resources.Management.ResourceIndexerContract, 1.0)]
                [marshaling_behavior(agile)]
                runtimeclass IndexedResourceCandidate
                {
                    [default] interface Windows.ApplicationModel.Resources.Management.IIndexedResourceCandidate;
                }

                [contract(Windows.ApplicationModel.Resources.Management.ResourceIndexerContract, 1.0)]
                [marshaling_behavior(agile)]
                runtimeclass IndexedResourceQualifier
                {
                    [default] interface Windows.ApplicationModel.Resources.Management.IIndexedResourceQualifier;
                }

                [activatable(Windows.ApplicationModel.Resources.Management.IResourceIndexerFactory, Windows.ApplicationModel.Resources.Management.ResourceIndexerContract, 1.0)]
                [activatable(Windows.ApplicationModel.Resources.Management.IResourceIndexerFactory2, Windows.ApplicationModel.Resources.Management.ResourceIndexerContract, 1.0)]
                [contract(Windows.ApplicationModel.Resources.Management.ResourceIndexerContract, 1.0)]
                [deprecated("Use CreateResourceIndexer in mrmsupport.dll instead of ResourceIndexer.  For more info, see MSDN.", deprecate, Windows.ApplicationModel.Resources.Management.ResourceIndexerContract, 2.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass ResourceIndexer
                {
                    [default] interface Windows.ApplicationModel.Resources.Management.IResourceIndexer;
                }
            }
        }
    }
}
