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

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "Windows.Foundation.idl";
import "Windows.Security.Credentials.idl";
import "Windows.Security.Cryptography.Certificates.idl";
import "Windows.Web.Http.idl";
// Additional imports to ensure that all required headers are included
cpp_quote("#if defined(__cplusplus)")
cpp_quote("}")
cpp_quote("#endif // defined(__cplusplus)")
cpp_quote("#include <Windows.Foundation.h>")
cpp_quote("#if !defined(__windows2Esecurity2Ecredentials_h__)")
cpp_quote("#include <Windows.Security.Credentials.h>")
cpp_quote("#endif // !defined(__windows2Esecurity2Ecredentials_h__)")
cpp_quote("#if !defined(__windows2Esecurity2Ecryptography2Ecertificates_h__)")
cpp_quote("#include <Windows.Security.Cryptography.Certificates.h>")
cpp_quote("#endif // !defined(__windows2Esecurity2Ecryptography2Ecertificates_h__)")
cpp_quote("#if !defined(__windows2Eweb2Ehttp_h__)")
cpp_quote("#include <Windows.Web.Http.h>")
cpp_quote("#endif // !defined(__windows2Eweb2Ehttp_h__)")
cpp_quote("#if defined(__cplusplus)")
cpp_quote("extern \"C\" {")
cpp_quote("#endif // defined(__cplusplus)")

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        interface IClosable;
    }
}
namespace Windows
{
    namespace Security
    {
        namespace Credentials
        {
            runtimeclass PasswordCredential;
        }
    }
}
namespace Windows
{
    namespace Security
    {
        namespace Cryptography
        {
            namespace Certificates
            {
                runtimeclass Certificate;

                typedef enum ChainValidationResult ChainValidationResult;
            }
        }
    }
}
namespace Windows
{
    namespace Web
    {
        namespace Http
        {
            runtimeclass HttpCookieManager;

            typedef struct HttpProgress HttpProgress;

            runtimeclass HttpRequestMessage;

            runtimeclass HttpResponseMessage;
        }
    }
}
namespace Windows
{
    namespace Web
    {
        namespace Http
        {
            namespace Filters
            {
                typedef enum HttpCacheReadBehavior HttpCacheReadBehavior;

                typedef enum HttpCacheWriteBehavior HttpCacheWriteBehavior;

                interface IHttpFilter;

                interface IHttpCacheControl;

                interface IHttpBaseProtocolFilter;

                runtimeclass HttpCacheControl;

                runtimeclass HttpBaseProtocolFilter;
            }
        }
    }
}

// Generic instantiations

// Type definition
namespace Windows
{
    namespace Web
    {
        namespace Http
        {
            namespace Filters
            {
                [version(0x06030000)]
                enum HttpCacheReadBehavior
                {
                    Default       = 0,
                    MostRecent    = 1,
                    OnlyFromCache = 2
                };

                [version(0x06030000)]
                enum HttpCacheWriteBehavior
                {
                    Default = 0,
                    NoCache = 1
                };

                [uuid(A4CB6DD5-0902-439E-BFD7-E12552B165CE)]
                [version(0x06030000)]
                interface IHttpFilter : IInspectable
                    requires
                        Windows.Foundation.IClosable
                {
                    HRESULT SendRequestAsync([in] Windows.Web.Http.HttpRequestMessage* request, [out] [retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.Web.Http.HttpResponseMessage*, Windows.Web.Http.HttpProgress>** operation);
                }

                [exclusiveto(Windows.Web.Http.Filters.HttpCacheControl)]
                [uuid(C77E1CB4-3CEA-4EB5-AC85-04E186E63AB7)]
                [version(0x06030000)]
                interface IHttpCacheControl : IInspectable
                {
                    [propget] HRESULT ReadBehavior([out] [retval] Windows.Web.Http.Filters.HttpCacheReadBehavior* value);
                    [propput] HRESULT ReadBehavior([in] Windows.Web.Http.Filters.HttpCacheReadBehavior value);
                    [propget] HRESULT WriteBehavior([out] [retval] Windows.Web.Http.Filters.HttpCacheWriteBehavior* value);
                    [propput] HRESULT WriteBehavior([in] Windows.Web.Http.Filters.HttpCacheWriteBehavior value);
                }

                [exclusiveto(Windows.Web.Http.Filters.HttpBaseProtocolFilter)]
                [uuid(71C89B09-E131-4B54-A53C-EB43FF37E9BB)]
                [version(0x06030000)]
                interface IHttpBaseProtocolFilter : IInspectable
                    requires
                        Windows.Web.Http.Filters.IHttpFilter,
                        Windows.Foundation.IClosable
                {
                    [propget] HRESULT AllowAutoRedirect([out] [retval] boolean* value);
                    [propput] HRESULT AllowAutoRedirect([in] boolean value);
                    [propget] HRESULT AllowUI([out] [retval] boolean* value);
                    [propput] HRESULT AllowUI([in] boolean value);
                    [propget] HRESULT AutomaticDecompression([out] [retval] boolean* value);
                    [propput] HRESULT AutomaticDecompression([in] boolean value);
                    [propget] HRESULT CacheControl([out] [retval] Windows.Web.Http.Filters.HttpCacheControl** value);
                    [propget] HRESULT CookieManager([out] [retval] Windows.Web.Http.HttpCookieManager** value);
                    [propget] HRESULT ClientCertificate([out] [retval] Windows.Security.Cryptography.Certificates.Certificate** value);
                    [propput] HRESULT ClientCertificate([in] Windows.Security.Cryptography.Certificates.Certificate* value);
                    [propget] HRESULT IgnorableServerCertificateErrors([out] [retval] Windows.Foundation.Collections.IVector<Windows.Security.Cryptography.Certificates.ChainValidationResult>** value);
                    [propget] HRESULT MaxConnectionsPerServer([out] [retval] UINT32* value);
                    [propput] HRESULT MaxConnectionsPerServer([in] UINT32 value);
                    [propget] HRESULT ProxyCredential([out] [retval] Windows.Security.Credentials.PasswordCredential** value);
                    [propput] HRESULT ProxyCredential([in] Windows.Security.Credentials.PasswordCredential* value);
                    [propget] HRESULT ServerCredential([out] [retval] Windows.Security.Credentials.PasswordCredential** value);
                    [propput] HRESULT ServerCredential([in] Windows.Security.Credentials.PasswordCredential* value);
                    [propget] HRESULT UseProxy([out] [retval] boolean* value);
                    [propput] HRESULT UseProxy([in] boolean value);
                }

                [marshaling_behavior(agile)]
                [threading(both)]
                [version(0x06030000)]
                runtimeclass HttpCacheControl
                {
                    [default] interface Windows.Web.Http.Filters.IHttpCacheControl;
                }

                [activatable(0x06030000)]
                [marshaling_behavior(agile)]
                [threading(both)]
                [version(0x06030000)]
                runtimeclass HttpBaseProtocolFilter
                {
                    [default] interface Windows.Web.Http.Filters.IHttpBaseProtocolFilter;
                    interface Windows.Web.Http.Filters.IHttpFilter;
                    interface Windows.Foundation.IClosable;
                }
            }
        }
    }
}
