//
// 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.Security.Credentials.idl";
import "Windows.Storage.Streams.idl";
import "Windows.Web.Syndication.idl";

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        apicontract UniversalApiContract;

        runtimeclass Uri;
    }
}
namespace Windows
{
    namespace Security
    {
        namespace Credentials
        {
            runtimeclass PasswordCredential;
        }
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace Streams
        {
            interface IInputStream;
        }
    }
}
namespace Windows
{
    namespace Web
    {
        namespace Syndication
        {
            interface ISyndicationClient;

            interface ISyndicationNode;

            interface ISyndicationText;

            typedef struct RetrievalProgress RetrievalProgress;

            runtimeclass SyndicationCategory;

            runtimeclass SyndicationItem;

            typedef struct TransferProgress TransferProgress;
        }
    }
}
namespace Windows
{
    namespace Web
    {
        namespace AtomPub
        {
            interface IAtomPubClient;

            interface IAtomPubClientFactory;

            interface IResourceCollection;

            interface IServiceDocument;

            interface IWorkspace;

            runtimeclass AtomPubClient;

            runtimeclass ResourceCollection;

            runtimeclass ServiceDocument;

            runtimeclass Workspace;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Web
    {
        namespace AtomPub
        {
            declare
            {
                interface Windows.Foundation.Collections.IIterable<Windows.Web.AtomPub.ResourceCollection*>;

                interface Windows.Foundation.Collections.IIterable<Windows.Web.AtomPub.Workspace*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Web.AtomPub.ResourceCollection*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Web.AtomPub.Workspace*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Web.AtomPub.ResourceCollection*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Web.AtomPub.Workspace*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Web
    {
        namespace AtomPub
        {
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Web.AtomPub.AtomPubClient)]
            [uuid(35392C38-CDED-4D4C-9637-05F15C1C9406)]
            interface IAtomPubClient : IInspectable
                requires
                    Windows.Web.Syndication.ISyndicationClient
            {
                HRESULT RetrieveServiceDocumentAsync([in] Windows.Foundation.Uri* uri, [out] [retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.Web.AtomPub.ServiceDocument*, Windows.Web.Syndication.RetrievalProgress>** operation);
                HRESULT RetrieveMediaResourceAsync([in] Windows.Foundation.Uri* uri, [out] [retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.Storage.Streams.IInputStream*, Windows.Web.Syndication.RetrievalProgress>** operation);
                HRESULT RetrieveResourceAsync([in] Windows.Foundation.Uri* uri, [out] [retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.Web.Syndication.SyndicationItem*, Windows.Web.Syndication.RetrievalProgress>** operation);
                HRESULT CreateResourceAsync([in] Windows.Foundation.Uri* uri, [in] HSTRING description, [in] Windows.Web.Syndication.SyndicationItem* item, [out] [retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.Web.Syndication.SyndicationItem*, Windows.Web.Syndication.TransferProgress>** operation);
                HRESULT CreateMediaResourceAsync([in] Windows.Foundation.Uri* uri, [in] HSTRING mediaType, [in] HSTRING description, [in] Windows.Storage.Streams.IInputStream* mediaStream, [out] [retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.Web.Syndication.SyndicationItem*, Windows.Web.Syndication.TransferProgress>** operation);
                HRESULT UpdateMediaResourceAsync([in] Windows.Foundation.Uri* uri, [in] HSTRING mediaType, [in] Windows.Storage.Streams.IInputStream* mediaStream, [out] [retval] Windows.Foundation.IAsyncActionWithProgress<Windows.Web.Syndication.TransferProgress>** operation);
                HRESULT UpdateResourceAsync([in] Windows.Foundation.Uri* uri, [in] Windows.Web.Syndication.SyndicationItem* item, [out] [retval] Windows.Foundation.IAsyncActionWithProgress<Windows.Web.Syndication.TransferProgress>** operation);
                HRESULT UpdateResourceItemAsync([in] Windows.Web.Syndication.SyndicationItem* item, [out] [retval] Windows.Foundation.IAsyncActionWithProgress<Windows.Web.Syndication.TransferProgress>** operation);
                HRESULT DeleteResourceAsync([in] Windows.Foundation.Uri* uri, [out] [retval] Windows.Foundation.IAsyncActionWithProgress<Windows.Web.Syndication.TransferProgress>** operation);
                HRESULT DeleteResourceItemAsync([in] Windows.Web.Syndication.SyndicationItem* item, [out] [retval] Windows.Foundation.IAsyncActionWithProgress<Windows.Web.Syndication.TransferProgress>** operation);
                HRESULT CancelAsyncOperations();
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Web.AtomPub.AtomPubClient)]
            [uuid(49D55012-57CB-4BDE-AB9F-2610B172777B)]
            interface IAtomPubClientFactory : IInspectable
            {
                HRESULT CreateAtomPubClientWithCredentials([in] Windows.Security.Credentials.PasswordCredential* serverCredential, [out] [retval] Windows.Web.AtomPub.AtomPubClient** atomPubClient);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Web.AtomPub.ResourceCollection)]
            [uuid(7F5FD609-BC88-41D4-88FA-3DE6704D428E)]
            interface IResourceCollection : IInspectable
                requires
                    Windows.Web.Syndication.ISyndicationNode
            {
                [propget] HRESULT Title([out] [retval] Windows.Web.Syndication.ISyndicationText** value);
                [propget] HRESULT Uri([out] [retval] Windows.Foundation.Uri** value);
                [propget] HRESULT Categories([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Web.Syndication.SyndicationCategory*>** value);
                [propget] HRESULT Accepts([out] [retval] Windows.Foundation.Collections.IVectorView<HSTRING>** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Web.AtomPub.ServiceDocument)]
            [uuid(8B7EC771-2AB3-4DBE-8BCC-778F92B75E51)]
            interface IServiceDocument : IInspectable
                requires
                    Windows.Web.Syndication.ISyndicationNode
            {
                [propget] HRESULT Workspaces([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Web.AtomPub.Workspace*>** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Web.AtomPub.Workspace)]
            [uuid(B41DA63B-A4B8-4036-89C5-83C31266BA49)]
            interface IWorkspace : IInspectable
                requires
                    Windows.Web.Syndication.ISyndicationNode
            {
                [propget] HRESULT Title([out] [retval] Windows.Web.Syndication.ISyndicationText** value);
                [propget] HRESULT Collections([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Web.AtomPub.ResourceCollection*>** value);
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [activatable(Windows.Web.AtomPub.IAtomPubClientFactory, Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass AtomPubClient
            {
                [default] interface Windows.Web.AtomPub.IAtomPubClient;
                interface Windows.Web.Syndication.ISyndicationClient;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass ResourceCollection
            {
                [default] interface Windows.Web.AtomPub.IResourceCollection;
                interface Windows.Web.Syndication.ISyndicationNode;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass ServiceDocument
            {
                [default] interface Windows.Web.AtomPub.IServiceDocument;
                interface Windows.Web.Syndication.ISyndicationNode;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass Workspace
            {
                [default] interface Windows.Web.AtomPub.IWorkspace;
                interface Windows.Web.Syndication.ISyndicationNode;
            }
        }
    }
}
