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

// Forward Declare
namespace Windows
{
    namespace ApplicationModel
    {
        namespace Background
        {
            interface IBackgroundTrigger;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        typedef struct DateTime DateTime;

        runtimeclass Deferral;

        apicontract UniversalApiContract;

        runtimeclass Uri;
    }
}
namespace Windows
{
    namespace Security
    {
        namespace Credentials
        {
            runtimeclass PasswordCredential;
        }
    }
}
namespace Windows
{
    namespace Storage
    {
        interface IStorageFile;
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace Streams
        {
            interface IInputStream;

            interface IRandomAccessStreamReference;
        }
    }
}
namespace Windows
{
    namespace UI
    {
        namespace Notifications
        {
            runtimeclass TileNotification;

            runtimeclass ToastNotification;
        }
    }
}
namespace Windows
{
    namespace Web
    {
        typedef enum WebErrorStatus WebErrorStatus;
    }
}
namespace Windows
{
    namespace Networking
    {
        namespace BackgroundTransfer
        {
            typedef enum BackgroundTransferBehavior BackgroundTransferBehavior;

            typedef enum BackgroundTransferCostPolicy BackgroundTransferCostPolicy;

            typedef enum BackgroundTransferPriority BackgroundTransferPriority;

            typedef enum BackgroundTransferStatus BackgroundTransferStatus;

            typedef struct BackgroundDownloadProgress BackgroundDownloadProgress;

            typedef struct BackgroundTransferFileRange BackgroundTransferFileRange;

            typedef struct BackgroundUploadProgress BackgroundUploadProgress;

            interface IBackgroundDownloader;

            interface IBackgroundDownloader2;

            interface IBackgroundDownloader3;

            interface IBackgroundDownloaderFactory;

            interface IBackgroundDownloaderStaticMethods;

            interface IBackgroundDownloaderStaticMethods2;

            interface IBackgroundDownloaderUserConsent;

            interface IBackgroundTransferBase;

            interface IBackgroundTransferCompletionGroup;

            interface IBackgroundTransferCompletionGroupTriggerDetails;

            interface IBackgroundTransferContentPart;

            interface IBackgroundTransferContentPartFactory;

            interface IBackgroundTransferErrorStaticMethods;

            interface IBackgroundTransferGroup;

            interface IBackgroundTransferGroupStatics;

            interface IBackgroundTransferOperation;

            interface IBackgroundTransferOperationPriority;

            interface IBackgroundTransferRangesDownloadedEventArgs;

            interface IBackgroundUploader;

            interface IBackgroundUploader2;

            interface IBackgroundUploader3;

            interface IBackgroundUploaderFactory;

            interface IBackgroundUploaderStaticMethods;

            interface IBackgroundUploaderStaticMethods2;

            interface IBackgroundUploaderUserConsent;

            interface IContentPrefetcher;

            interface IContentPrefetcherTime;

            interface IDownloadOperation;

            interface IDownloadOperation2;

            interface IDownloadOperation3;

            interface IDownloadOperation4;

            interface IDownloadOperation5;

            interface IResponseInformation;

            interface IUnconstrainedTransferRequestResult;

            interface IUploadOperation;

            interface IUploadOperation2;

            interface IUploadOperation3;

            interface IUploadOperation4;

            runtimeclass BackgroundDownloader;

            runtimeclass BackgroundTransferCompletionGroup;

            runtimeclass BackgroundTransferCompletionGroupTriggerDetails;

            runtimeclass BackgroundTransferContentPart;

            runtimeclass BackgroundTransferError;

            runtimeclass BackgroundTransferGroup;

            runtimeclass BackgroundTransferRangesDownloadedEventArgs;

            runtimeclass BackgroundUploader;

            runtimeclass ContentPrefetcher;

            runtimeclass DownloadOperation;

            runtimeclass ResponseInformation;

            runtimeclass UnconstrainedTransferRequestResult;

            runtimeclass UploadOperation;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Networking
    {
        namespace BackgroundTransfer
        {
            declare
            {
                interface Windows.Foundation.Collections.IIterable<Windows.Networking.BackgroundTransfer.BackgroundTransferContentPart*>;

                interface Windows.Foundation.Collections.IIterable<Windows.Networking.BackgroundTransfer.BackgroundTransferFileRange>;

                interface Windows.Foundation.Collections.IIterable<Windows.Networking.BackgroundTransfer.DownloadOperation*>;

                interface Windows.Foundation.Collections.IIterable<Windows.Networking.BackgroundTransfer.UploadOperation*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Networking.BackgroundTransfer.BackgroundTransferContentPart*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Networking.BackgroundTransfer.BackgroundTransferFileRange>;

                interface Windows.Foundation.Collections.IIterator<Windows.Networking.BackgroundTransfer.DownloadOperation*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Networking.BackgroundTransfer.UploadOperation*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Networking.BackgroundTransfer.BackgroundTransferFileRange>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Networking.BackgroundTransfer.DownloadOperation*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Networking.BackgroundTransfer.UploadOperation*>;

                interface Windows.Foundation.Collections.IVector<Windows.Networking.BackgroundTransfer.BackgroundTransferFileRange>;

                interface Windows.Foundation.IAsyncOperationWithProgress<Windows.Networking.BackgroundTransfer.DownloadOperation*, Windows.Networking.BackgroundTransfer.DownloadOperation*>;

                interface Windows.Foundation.IAsyncOperationWithProgress<Windows.Networking.BackgroundTransfer.UploadOperation*, Windows.Networking.BackgroundTransfer.UploadOperation*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.Networking.BackgroundTransfer.DownloadOperation*>*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.Networking.BackgroundTransfer.UploadOperation*>*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Networking.BackgroundTransfer.DownloadOperation*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Networking.BackgroundTransfer.UnconstrainedTransferRequestResult*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Networking.BackgroundTransfer.UploadOperation*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Networking.BackgroundTransfer.DownloadOperation*, Windows.Networking.BackgroundTransfer.BackgroundTransferRangesDownloadedEventArgs*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Networking
    {
        namespace BackgroundTransfer
        {
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum BackgroundTransferBehavior
            {
                Parallel   = 0,
                Serialized = 1
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum BackgroundTransferCostPolicy
            {
                Default          = 0,
                UnrestrictedOnly = 1,
                Always           = 2
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum BackgroundTransferPriority
            {
                Default = 0,
                High    = 1,
                [contract(Windows.Foundation.UniversalApiContract, 7.0)]
                Low     = 2
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum BackgroundTransferStatus
            {
                Idle                            = 0,
                Running                         = 1,
                PausedByApplication             = 2,
                PausedCostedNetwork             = 3,
                PausedNoNetwork                 = 4,
                Completed                       = 5,
                Canceled                        = 6,
                Error                           = 7,
                [contract(Windows.Foundation.UniversalApiContract, 5.0)]
                PausedRecoverableWebErrorStatus = 8,
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                PausedSystemPolicy              = 32
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            struct BackgroundDownloadProgress
            {
                UINT64 BytesReceived;
                UINT64 TotalBytesToReceive;
                Windows.Networking.BackgroundTransfer.BackgroundTransferStatus Status;
                boolean HasResponseChanged;
                boolean HasRestarted;
            };

            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            struct BackgroundTransferFileRange
            {
                UINT64 Offset;
                UINT64 Length;
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            struct BackgroundUploadProgress
            {
                UINT64 BytesReceived;
                UINT64 BytesSent;
                UINT64 TotalBytesToReceive;
                UINT64 TotalBytesToSend;
                Windows.Networking.BackgroundTransfer.BackgroundTransferStatus Status;
                boolean HasResponseChanged;
                boolean HasRestarted;
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.BackgroundTransfer.BackgroundDownloader)]
            [uuid(C1C79333-6649-4B1D-A826-A4B3DD234D0B)]
            interface IBackgroundDownloader : IInspectable
                requires
                    Windows.Networking.BackgroundTransfer.IBackgroundTransferBase
            {
                [overload("CreateDownload")] HRESULT CreateDownload([in] Windows.Foundation.Uri* uri, [in] Windows.Storage.IStorageFile* resultFile, [out] [retval] Windows.Networking.BackgroundTransfer.DownloadOperation** operation);
                [overload("CreateDownload")] HRESULT CreateDownloadFromFile([in] Windows.Foundation.Uri* uri, [in] Windows.Storage.IStorageFile* resultFile, [in] Windows.Storage.IStorageFile* requestBodyFile, [out] [retval] Windows.Networking.BackgroundTransfer.DownloadOperation** operation);
                HRESULT CreateDownloadAsync([in] Windows.Foundation.Uri* uri, [in] Windows.Storage.IStorageFile* resultFile, [in] Windows.Storage.Streams.IInputStream* requestBodyStream, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Networking.BackgroundTransfer.DownloadOperation*>** operation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.BackgroundTransfer.BackgroundDownloader)]
            [uuid(A94A5847-348D-4A35-890E-8A1EF3798479)]
            interface IBackgroundDownloader2 : IInspectable
            {
                [propget] HRESULT TransferGroup([out] [retval] Windows.Networking.BackgroundTransfer.BackgroundTransferGroup** value);
                [propput] HRESULT TransferGroup([in] Windows.Networking.BackgroundTransfer.BackgroundTransferGroup* value);
                [propget] HRESULT SuccessToastNotification([out] [retval] Windows.UI.Notifications.ToastNotification** value);
                [propput] HRESULT SuccessToastNotification([in] Windows.UI.Notifications.ToastNotification* value);
                [propget] HRESULT FailureToastNotification([out] [retval] Windows.UI.Notifications.ToastNotification** value);
                [propput] HRESULT FailureToastNotification([in] Windows.UI.Notifications.ToastNotification* value);
                [propget] HRESULT SuccessTileNotification([out] [retval] Windows.UI.Notifications.TileNotification** value);
                [propput] HRESULT SuccessTileNotification([in] Windows.UI.Notifications.TileNotification* value);
                [propget] HRESULT FailureTileNotification([out] [retval] Windows.UI.Notifications.TileNotification** value);
                [propput] HRESULT FailureTileNotification([in] Windows.UI.Notifications.TileNotification* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.BackgroundTransfer.BackgroundDownloader)]
            [uuid(D11A8C48-86E8-48E2-B615-6976AABF861D)]
            interface IBackgroundDownloader3 : IInspectable
            {
                [propget] HRESULT CompletionGroup([out] [retval] Windows.Networking.BackgroundTransfer.BackgroundTransferCompletionGroup** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.BackgroundTransfer.BackgroundDownloader)]
            [uuid(26836C24-D89E-46F4-A29A-4F4D4F144155)]
            interface IBackgroundDownloaderFactory : IInspectable
            {
                HRESULT CreateWithCompletionGroup([in] Windows.Networking.BackgroundTransfer.BackgroundTransferCompletionGroup* completionGroup, [out] [retval] Windows.Networking.BackgroundTransfer.BackgroundDownloader** backgroundDownloader);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.BackgroundTransfer.BackgroundDownloader)]
            [uuid(52A65A35-C64E-426C-9919-540D0D21A650)]
            interface IBackgroundDownloaderStaticMethods : IInspectable
            {
                [overload("GetCurrentDownloadsAsync")] HRESULT GetCurrentDownloadsAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.Networking.BackgroundTransfer.DownloadOperation*>*>** operation);
                [deprecated("GetCurrentDownloadsAsync(group) may be altered or unavailable for releases after Windows 8.1. Instead, use GetCurrentDownloadsForTransferGroupAsync.", deprecate, Windows.Foundation.UniversalApiContract, 1.0)] [overload("GetCurrentDownloadsAsync")] HRESULT GetCurrentDownloadsForGroupAsync([in] HSTRING group, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.Networking.BackgroundTransfer.DownloadOperation*>*>** operation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.BackgroundTransfer.BackgroundDownloader)]
            [uuid(2FAA1327-1AD4-4CA5-B2CD-08DBF0746AFE)]
            interface IBackgroundDownloaderStaticMethods2 : IInspectable
            {
                HRESULT GetCurrentDownloadsForTransferGroupAsync([in] Windows.Networking.BackgroundTransfer.BackgroundTransferGroup* group, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.Networking.BackgroundTransfer.DownloadOperation*>*>** operation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [deprecated("IBackgroundDownloaderUserConsent is deprecated and may not work on all platforms. For more info, see MSDN.", deprecate, Windows.Foundation.UniversalApiContract, 3.0)]
            [exclusiveto(Windows.Networking.BackgroundTransfer.BackgroundDownloader)]
            [uuid(5D14E906-9266-4808-BD71-5925F2A3130A)]
            interface IBackgroundDownloaderUserConsent : IInspectable
            {
                [deprecated("RequestUnconstrainedDownloadsAsync is deprecated and may not work on all platforms. For more info, see MSDN.", deprecate, Windows.Foundation.UniversalApiContract, 3.0)] HRESULT RequestUnconstrainedDownloadsAsync([in] Windows.Foundation.Collections.IIterable<Windows.Networking.BackgroundTransfer.DownloadOperation*>* operations, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Networking.BackgroundTransfer.UnconstrainedTransferRequestResult*>** operation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [uuid(2A9DA250-C769-458C-AFE8-FEB8D4D3B2EF)]
            interface IBackgroundTransferBase : IInspectable
            {
                HRESULT SetRequestHeader([in] HSTRING headerName, [in] HSTRING headerValue);
                [propget] HRESULT ServerCredential([out] [retval] Windows.Security.Credentials.PasswordCredential** credential);
                [propput] HRESULT ServerCredential([in] Windows.Security.Credentials.PasswordCredential* credential);
                [propget] HRESULT ProxyCredential([out] [retval] Windows.Security.Credentials.PasswordCredential** credential);
                [propput] HRESULT ProxyCredential([in] Windows.Security.Credentials.PasswordCredential* credential);
                [propget] HRESULT Method([out] [retval] HSTRING* value);
                [propput] HRESULT Method([in] HSTRING value);
                [deprecated("Group may be altered or unavailable for releases after Windows 8.1. Instead, use TransferGroup.", deprecate, Windows.Foundation.UniversalApiContract, 1.0)] [propget] HRESULT Group([out] [retval] HSTRING* value);
                [deprecated("Group may be altered or unavailable for releases after Windows 8.1. Instead, use TransferGroup.", deprecate, Windows.Foundation.UniversalApiContract, 1.0)] [propput] HRESULT Group([in] HSTRING value);
                [propget] HRESULT CostPolicy([out] [retval] Windows.Networking.BackgroundTransfer.BackgroundTransferCostPolicy* value);
                [propput] HRESULT CostPolicy([in] Windows.Networking.BackgroundTransfer.BackgroundTransferCostPolicy value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.BackgroundTransfer.BackgroundTransferCompletionGroup)]
            [uuid(2D930225-986B-574D-7950-0ADD47F5D706)]
            interface IBackgroundTransferCompletionGroup : IInspectable
            {
                [propget] HRESULT Trigger([out] [retval] Windows.ApplicationModel.Background.IBackgroundTrigger** value);
                [propget] HRESULT IsEnabled([out] [retval] boolean* value);
                HRESULT Enable();
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.BackgroundTransfer.BackgroundTransferCompletionGroupTriggerDetails)]
            [uuid(7B6BE286-6E47-5136-7FCB-FA4389F46F5B)]
            interface IBackgroundTransferCompletionGroupTriggerDetails : IInspectable
            {
                [propget] HRESULT Downloads([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Networking.BackgroundTransfer.DownloadOperation*>** value);
                [propget] HRESULT Uploads([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Networking.BackgroundTransfer.UploadOperation*>** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.BackgroundTransfer.BackgroundTransferContentPart)]
            [uuid(E8E15657-D7D1-4ED8-838E-674AC217ACE6)]
            interface IBackgroundTransferContentPart : IInspectable
            {
                HRESULT SetHeader([in] HSTRING headerName, [in] HSTRING headerValue);
                HRESULT SetText([in] HSTRING value);
                HRESULT SetFile([in] Windows.Storage.IStorageFile* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [uuid(90EF98A9-7A01-4A0B-9F80-A0B0BB370F8D)]
            interface IBackgroundTransferContentPartFactory : IInspectable
            {
                HRESULT CreateWithName([in] HSTRING name, [out] [retval] Windows.Networking.BackgroundTransfer.BackgroundTransferContentPart** value);
                HRESULT CreateWithNameAndFileName([in] HSTRING name, [in] HSTRING fileName, [out] [retval] Windows.Networking.BackgroundTransfer.BackgroundTransferContentPart** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.BackgroundTransfer.BackgroundTransferError)]
            [uuid(AAD33B04-1192-4BF4-8B68-39C5ADD244E2)]
            interface IBackgroundTransferErrorStaticMethods : IInspectable
            {
                HRESULT GetStatus([in] INT32 hresult, [out] [retval] Windows.Web.WebErrorStatus* status);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.BackgroundTransfer.BackgroundTransferGroup)]
            [uuid(D8C3E3E4-6459-4540-85EB-AAA1C8903677)]
            interface IBackgroundTransferGroup : IInspectable
            {
                [propget] HRESULT Name([out] [retval] HSTRING* value);
                [propget] HRESULT TransferBehavior([out] [retval] Windows.Networking.BackgroundTransfer.BackgroundTransferBehavior* value);
                [propput] HRESULT TransferBehavior([in] Windows.Networking.BackgroundTransfer.BackgroundTransferBehavior value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.BackgroundTransfer.BackgroundTransferGroup)]
            [uuid(02EC50B2-7D18-495B-AA22-32A97D45D3E2)]
            interface IBackgroundTransferGroupStatics : IInspectable
            {
                HRESULT CreateGroup([in] HSTRING name, [out] [retval] Windows.Networking.BackgroundTransfer.BackgroundTransferGroup** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [uuid(DED06846-90CA-44FB-8FB1-124154C0D539)]
            interface IBackgroundTransferOperation : IInspectable
            {
                [propget] HRESULT Guid([out] [retval] GUID* value);
                [propget] HRESULT RequestedUri([out] [retval] Windows.Foundation.Uri** value);
                [propget] HRESULT Method([out] [retval] HSTRING* value);
                [deprecated("Group may be altered or unavailable for releases after Windows 8.1. Instead, use TransferGroup.", deprecate, Windows.Foundation.UniversalApiContract, 1.0)] [propget] HRESULT Group([out] [retval] HSTRING* value);
                [propget] HRESULT CostPolicy([out] [retval] Windows.Networking.BackgroundTransfer.BackgroundTransferCostPolicy* value);
                [propput] HRESULT CostPolicy([in] Windows.Networking.BackgroundTransfer.BackgroundTransferCostPolicy value);
                HRESULT GetResultStreamAt([in] UINT64 position, [out] [retval] Windows.Storage.Streams.IInputStream** value);
                HRESULT GetResponseInformation([out] [retval] Windows.Networking.BackgroundTransfer.ResponseInformation** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [uuid(04854327-5254-4B3A-915E-0AA49275C0F9)]
            interface IBackgroundTransferOperationPriority : IInspectable
            {
                [propget] HRESULT Priority([out] [retval] Windows.Networking.BackgroundTransfer.BackgroundTransferPriority* value);
                [propput] HRESULT Priority([in] Windows.Networking.BackgroundTransfer.BackgroundTransferPriority value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            [exclusiveto(Windows.Networking.BackgroundTransfer.BackgroundTransferRangesDownloadedEventArgs)]
            [uuid(3EBC7453-BF48-4A88-9248-B0C165184F5C)]
            interface IBackgroundTransferRangesDownloadedEventArgs : IInspectable
            {
                [propget] HRESULT WasDownloadRestarted([out] [retval] boolean* value);
                [propget] HRESULT AddedRanges([out] [retval] Windows.Foundation.Collections.IVector<Windows.Networking.BackgroundTransfer.BackgroundTransferFileRange>** value);
                HRESULT GetDeferral([out] [retval] Windows.Foundation.Deferral** result);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.BackgroundTransfer.BackgroundUploader)]
            [uuid(C595C9AE-CEAD-465B-8801-C55AC90A01CE)]
            interface IBackgroundUploader : IInspectable
                requires
                    Windows.Networking.BackgroundTransfer.IBackgroundTransferBase
            {
                HRESULT CreateUpload([in] Windows.Foundation.Uri* uri, [in] Windows.Storage.IStorageFile* sourceFile, [out] [retval] Windows.Networking.BackgroundTransfer.UploadOperation** operation);
                HRESULT CreateUploadFromStreamAsync([in] Windows.Foundation.Uri* uri, [in] Windows.Storage.Streams.IInputStream* sourceStream, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Networking.BackgroundTransfer.UploadOperation*>** operation);
                [overload("CreateUploadAsync")] HRESULT CreateUploadWithFormDataAndAutoBoundaryAsync([in] Windows.Foundation.Uri* uri, [in] Windows.Foundation.Collections.IIterable<Windows.Networking.BackgroundTransfer.BackgroundTransferContentPart*>* parts, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Networking.BackgroundTransfer.UploadOperation*>** operation);
                [overload("CreateUploadAsync")] HRESULT CreateUploadWithSubTypeAsync([in] Windows.Foundation.Uri* uri, [in] Windows.Foundation.Collections.IIterable<Windows.Networking.BackgroundTransfer.BackgroundTransferContentPart*>* parts, [in] HSTRING subType, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Networking.BackgroundTransfer.UploadOperation*>** operation);
                [overload("CreateUploadAsync")] HRESULT CreateUploadWithSubTypeAndBoundaryAsync([in] Windows.Foundation.Uri* uri, [in] Windows.Foundation.Collections.IIterable<Windows.Networking.BackgroundTransfer.BackgroundTransferContentPart*>* parts, [in] HSTRING subType, [in] HSTRING boundary, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Networking.BackgroundTransfer.UploadOperation*>** operation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.BackgroundTransfer.BackgroundUploader)]
            [uuid(8E0612CE-0C34-4463-807F-198A1B8BD4AD)]
            interface IBackgroundUploader2 : IInspectable
            {
                [propget] HRESULT TransferGroup([out] [retval] Windows.Networking.BackgroundTransfer.BackgroundTransferGroup** value);
                [propput] HRESULT TransferGroup([in] Windows.Networking.BackgroundTransfer.BackgroundTransferGroup* value);
                [propget] HRESULT SuccessToastNotification([out] [retval] Windows.UI.Notifications.ToastNotification** value);
                [propput] HRESULT SuccessToastNotification([in] Windows.UI.Notifications.ToastNotification* value);
                [propget] HRESULT FailureToastNotification([out] [retval] Windows.UI.Notifications.ToastNotification** value);
                [propput] HRESULT FailureToastNotification([in] Windows.UI.Notifications.ToastNotification* value);
                [propget] HRESULT SuccessTileNotification([out] [retval] Windows.UI.Notifications.TileNotification** value);
                [propput] HRESULT SuccessTileNotification([in] Windows.UI.Notifications.TileNotification* value);
                [propget] HRESULT FailureTileNotification([out] [retval] Windows.UI.Notifications.TileNotification** value);
                [propput] HRESULT FailureTileNotification([in] Windows.UI.Notifications.TileNotification* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.BackgroundTransfer.BackgroundUploader)]
            [uuid(B95E9439-5BF0-4B3A-8C47-2C6199A854B9)]
            interface IBackgroundUploader3 : IInspectable
            {
                [propget] HRESULT CompletionGroup([out] [retval] Windows.Networking.BackgroundTransfer.BackgroundTransferCompletionGroup** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.BackgroundTransfer.BackgroundUploader)]
            [uuid(736203C7-10E7-48A0-AC3C-1AC71095EC57)]
            interface IBackgroundUploaderFactory : IInspectable
            {
                HRESULT CreateWithCompletionGroup([in] Windows.Networking.BackgroundTransfer.BackgroundTransferCompletionGroup* completionGroup, [out] [retval] Windows.Networking.BackgroundTransfer.BackgroundUploader** backgroundUploader);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.BackgroundTransfer.BackgroundUploader)]
            [uuid(F2875CFB-9B05-4741-9121-740A83E247DF)]
            interface IBackgroundUploaderStaticMethods : IInspectable
            {
                [overload("GetCurrentUploadsAsync")] HRESULT GetCurrentUploadsAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.Networking.BackgroundTransfer.UploadOperation*>*>** operation);
                [deprecated("GetCurrentUploadsAsync(group) may be altered or unavailable for releases after Windows 8.1. Instead, use GetCurrentUploadsForTransferGroupAsync.", deprecate, Windows.Foundation.UniversalApiContract, 1.0)] [overload("GetCurrentUploadsAsync")] HRESULT GetCurrentUploadsForGroupAsync([in] HSTRING group, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.Networking.BackgroundTransfer.UploadOperation*>*>** operation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.BackgroundTransfer.BackgroundUploader)]
            [uuid(E919AC62-EA08-42F0-A2AC-07E467549080)]
            interface IBackgroundUploaderStaticMethods2 : IInspectable
            {
                HRESULT GetCurrentUploadsForTransferGroupAsync([in] Windows.Networking.BackgroundTransfer.BackgroundTransferGroup* group, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.Networking.BackgroundTransfer.UploadOperation*>*>** operation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [deprecated("IBackgroundUploaderUserConsent is deprecated and may not work on all platforms. For more info, see MSDN.", deprecate, Windows.Foundation.UniversalApiContract, 3.0)]
            [exclusiveto(Windows.Networking.BackgroundTransfer.BackgroundUploader)]
            [uuid(3BB384CB-0760-461D-907F-5138F84D44C1)]
            interface IBackgroundUploaderUserConsent : IInspectable
            {
                [deprecated("RequestUnconstrainedUploadsAsync is deprecated and may not work on all platforms. For more info, see MSDN.", deprecate, Windows.Foundation.UniversalApiContract, 3.0)] HRESULT RequestUnconstrainedUploadsAsync([in] Windows.Foundation.Collections.IIterable<Windows.Networking.BackgroundTransfer.UploadOperation*>* operations, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Networking.BackgroundTransfer.UnconstrainedTransferRequestResult*>** operation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.BackgroundTransfer.ContentPrefetcher)]
            [uuid(A8D6F754-7DC1-4CD9-8810-2A6AA9417E11)]
            interface IContentPrefetcher : IInspectable
            {
                [propget] HRESULT ContentUris([out] [retval] Windows.Foundation.Collections.IVector<Windows.Foundation.Uri*>** value);
                [propput] HRESULT IndirectContentUri([in] Windows.Foundation.Uri* value);
                [propget] HRESULT IndirectContentUri([out] [retval] Windows.Foundation.Uri** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.BackgroundTransfer.ContentPrefetcher)]
            [uuid(E361FD08-132A-4FDE-A7CC-FCB0E66523AF)]
            interface IContentPrefetcherTime : IInspectable
            {
                [propget] HRESULT LastSuccessfulPrefetchTime([out] [retval] Windows.Foundation.IReference<Windows.Foundation.DateTime>** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.BackgroundTransfer.DownloadOperation)]
            [uuid(BD87EBB0-5714-4E09-BA68-BEF73903B0D7)]
            interface IDownloadOperation : IInspectable
                requires
                    Windows.Networking.BackgroundTransfer.IBackgroundTransferOperation
            {
                [propget] HRESULT ResultFile([out] [retval] Windows.Storage.IStorageFile** value);
                [propget] HRESULT Progress([out] [retval] Windows.Networking.BackgroundTransfer.BackgroundDownloadProgress* value);
                HRESULT StartAsync([out] [retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.Networking.BackgroundTransfer.DownloadOperation*, Windows.Networking.BackgroundTransfer.DownloadOperation*>** operation);
                HRESULT AttachAsync([out] [retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.Networking.BackgroundTransfer.DownloadOperation*, Windows.Networking.BackgroundTransfer.DownloadOperation*>** operation);
                HRESULT Pause();
                HRESULT Resume();
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.BackgroundTransfer.DownloadOperation)]
            [uuid(A3CCED40-8F9C-4353-9CD4-290DEE387C38)]
            interface IDownloadOperation2 : IInspectable
            {
                [propget] HRESULT TransferGroup([out] [retval] Windows.Networking.BackgroundTransfer.BackgroundTransferGroup** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            [exclusiveto(Windows.Networking.BackgroundTransfer.DownloadOperation)]
            [uuid(5027351C-7D5E-4ADC-B8D3-DF5C6031B9CC)]
            interface IDownloadOperation3 : IInspectable
            {
                [propget] HRESULT IsRandomAccessRequired([out] [retval] boolean* value);
                [propput] HRESULT IsRandomAccessRequired([in] boolean value);
                HRESULT GetResultRandomAccessStreamReference([out] [retval] Windows.Storage.Streams.IRandomAccessStreamReference** stream);
                HRESULT GetDownloadedRanges([out] [retval] Windows.Foundation.Collections.IVector<Windows.Networking.BackgroundTransfer.BackgroundTransferFileRange>** value);
                [eventadd] HRESULT RangesDownloaded([in] Windows.Foundation.TypedEventHandler<Windows.Networking.BackgroundTransfer.DownloadOperation*, Windows.Networking.BackgroundTransfer.BackgroundTransferRangesDownloadedEventArgs*>* eventHandler, [out] [retval] EventRegistrationToken* eventCookie);
                [eventremove] HRESULT RangesDownloaded([in] EventRegistrationToken eventCookie);
                [propput] HRESULT RequestedUri([in] Windows.Foundation.Uri* value);
                [propget] HRESULT RecoverableWebErrorStatuses([out] [retval] Windows.Foundation.Collections.IVector<Windows.Web.WebErrorStatus>** value);
                [propget] HRESULT CurrentWebErrorStatus([out] [retval] Windows.Foundation.IReference<Windows.Web.WebErrorStatus>** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 6.0)]
            [exclusiveto(Windows.Networking.BackgroundTransfer.DownloadOperation)]
            [uuid(0CDAAEF4-8CEF-404A-966D-F058400BED80)]
            interface IDownloadOperation4 : IInspectable
            {
                HRESULT MakeCurrentInTransferGroup();
            }

            [contract(Windows.Foundation.UniversalApiContract, 10.0)]
            [exclusiveto(Windows.Networking.BackgroundTransfer.DownloadOperation)]
            [uuid(A699A86F-5590-463A-B8D6-1E491A2760A5)]
            interface IDownloadOperation5 : IInspectable
            {
                HRESULT SetRequestHeader([in] HSTRING headerName, [in] HSTRING headerValue);
                HRESULT RemoveRequestHeader([in] HSTRING headerName);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.BackgroundTransfer.ResponseInformation)]
            [uuid(F8BB9A12-F713-4792-8B68-D9D297F91D2E)]
            interface IResponseInformation : IInspectable
            {
                [propget] HRESULT IsResumable([out] [retval] boolean* value);
                [propget] HRESULT ActualUri([out] [retval] Windows.Foundation.Uri** value);
                [propget] HRESULT StatusCode([out] [retval] UINT32* value);
                [propget] HRESULT Headers([out] [retval] Windows.Foundation.Collections.IMapView<HSTRING, HSTRING>** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [deprecated("IUnconstrainedTransferRequestResult is deprecated and may not work on all platforms. For more info, see MSDN.", deprecate, Windows.Foundation.UniversalApiContract, 3.0)]
            [exclusiveto(Windows.Networking.BackgroundTransfer.UnconstrainedTransferRequestResult)]
            [uuid(4C24B81F-D944-4112-A98E-6A69522B7EBB)]
            interface IUnconstrainedTransferRequestResult : IInspectable
            {
                [deprecated("IsUnconstrained is deprecated and may not work on all platforms. For more info, see MSDN.", deprecate, Windows.Foundation.UniversalApiContract, 3.0)] [propget] HRESULT IsUnconstrained([out] [retval] boolean* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.BackgroundTransfer.UploadOperation)]
            [uuid(3E5624E0-7389-434C-8B35-427FD36BBDAE)]
            interface IUploadOperation : IInspectable
                requires
                    Windows.Networking.BackgroundTransfer.IBackgroundTransferOperation
            {
                [propget] HRESULT SourceFile([out] [retval] Windows.Storage.IStorageFile** value);
                [propget] HRESULT Progress([out] [retval] Windows.Networking.BackgroundTransfer.BackgroundUploadProgress* value);
                HRESULT StartAsync([out] [retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.Networking.BackgroundTransfer.UploadOperation*, Windows.Networking.BackgroundTransfer.UploadOperation*>** operation);
                HRESULT AttachAsync([out] [retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.Networking.BackgroundTransfer.UploadOperation*, Windows.Networking.BackgroundTransfer.UploadOperation*>** operation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Networking.BackgroundTransfer.UploadOperation)]
            [uuid(556189F2-2774-4DF6-9FA5-209F2BFB12F7)]
            interface IUploadOperation2 : IInspectable
            {
                [propget] HRESULT TransferGroup([out] [retval] Windows.Networking.BackgroundTransfer.BackgroundTransferGroup** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 6.0)]
            [exclusiveto(Windows.Networking.BackgroundTransfer.UploadOperation)]
            [uuid(42C92CA3-DE39-4546-BC62-3774B4294DE3)]
            interface IUploadOperation3 : IInspectable
            {
                HRESULT MakeCurrentInTransferGroup();
            }

            [contract(Windows.Foundation.UniversalApiContract, 10.0)]
            [exclusiveto(Windows.Networking.BackgroundTransfer.UploadOperation)]
            [uuid(50EDEF31-FAC5-41EE-B030-DC77CAEE9FAA)]
            interface IUploadOperation4 : IInspectable
            {
                HRESULT SetRequestHeader([in] HSTRING headerName, [in] HSTRING headerValue);
                HRESULT RemoveRequestHeader([in] HSTRING headerName);
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [activatable(Windows.Networking.BackgroundTransfer.IBackgroundDownloaderFactory, Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Networking.BackgroundTransfer.IBackgroundDownloaderStaticMethods, Windows.Foundation.UniversalApiContract, 1.0)]
            [static(Windows.Networking.BackgroundTransfer.IBackgroundDownloaderStaticMethods2, Windows.Foundation.UniversalApiContract, 1.0)]
            [static(Windows.Networking.BackgroundTransfer.IBackgroundDownloaderUserConsent, Windows.Foundation.UniversalApiContract, 1.0)]
            [threading(both)]
            runtimeclass BackgroundDownloader
            {
                [default] interface Windows.Networking.BackgroundTransfer.IBackgroundDownloader;
                interface Windows.Networking.BackgroundTransfer.IBackgroundTransferBase;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Networking.BackgroundTransfer.IBackgroundDownloader2;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Networking.BackgroundTransfer.IBackgroundDownloader3;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass BackgroundTransferCompletionGroup
            {
                [default] interface Windows.Networking.BackgroundTransfer.IBackgroundTransferCompletionGroup;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass BackgroundTransferCompletionGroupTriggerDetails
            {
                [default] interface Windows.Networking.BackgroundTransfer.IBackgroundTransferCompletionGroupTriggerDetails;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [activatable(Windows.Networking.BackgroundTransfer.IBackgroundTransferContentPartFactory, Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass BackgroundTransferContentPart
            {
                [default] interface Windows.Networking.BackgroundTransfer.IBackgroundTransferContentPart;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Networking.BackgroundTransfer.IBackgroundTransferErrorStaticMethods, Windows.Foundation.UniversalApiContract, 1.0)]
            [threading(both)]
            runtimeclass BackgroundTransferError
            {
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Networking.BackgroundTransfer.IBackgroundTransferGroupStatics, Windows.Foundation.UniversalApiContract, 1.0)]
            [threading(both)]
            runtimeclass BackgroundTransferGroup
            {
                [default] interface Windows.Networking.BackgroundTransfer.IBackgroundTransferGroup;
            }

            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            [marshaling_behavior(agile)]
            runtimeclass BackgroundTransferRangesDownloadedEventArgs
            {
                [default] interface Windows.Networking.BackgroundTransfer.IBackgroundTransferRangesDownloadedEventArgs;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [activatable(Windows.Networking.BackgroundTransfer.IBackgroundUploaderFactory, Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Networking.BackgroundTransfer.IBackgroundUploaderStaticMethods, Windows.Foundation.UniversalApiContract, 1.0)]
            [static(Windows.Networking.BackgroundTransfer.IBackgroundUploaderStaticMethods2, Windows.Foundation.UniversalApiContract, 1.0)]
            [static(Windows.Networking.BackgroundTransfer.IBackgroundUploaderUserConsent, Windows.Foundation.UniversalApiContract, 1.0)]
            [threading(both)]
            runtimeclass BackgroundUploader
            {
                [default] interface Windows.Networking.BackgroundTransfer.IBackgroundUploader;
                interface Windows.Networking.BackgroundTransfer.IBackgroundTransferBase;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Networking.BackgroundTransfer.IBackgroundUploader2;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Networking.BackgroundTransfer.IBackgroundUploader3;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Networking.BackgroundTransfer.IContentPrefetcher, Windows.Foundation.UniversalApiContract, 1.0)]
            [static(Windows.Networking.BackgroundTransfer.IContentPrefetcherTime, Windows.Foundation.UniversalApiContract, 1.0)]
            [threading(both)]
            runtimeclass ContentPrefetcher
            {
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass DownloadOperation
            {
                [default] interface Windows.Networking.BackgroundTransfer.IDownloadOperation;
                interface Windows.Networking.BackgroundTransfer.IBackgroundTransferOperation;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Networking.BackgroundTransfer.IBackgroundTransferOperationPriority;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Networking.BackgroundTransfer.IDownloadOperation2;
                [contract(Windows.Foundation.UniversalApiContract, 5.0)] interface Windows.Networking.BackgroundTransfer.IDownloadOperation3;
                [contract(Windows.Foundation.UniversalApiContract, 6.0)] interface Windows.Networking.BackgroundTransfer.IDownloadOperation4;
                [contract(Windows.Foundation.UniversalApiContract, 10.0)] interface Windows.Networking.BackgroundTransfer.IDownloadOperation5;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass ResponseInformation
            {
                [default] interface Windows.Networking.BackgroundTransfer.IResponseInformation;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [deprecated("UnconstrainedTransferRequestResult is deprecated and may not work on all platforms. For more info, see MSDN.", deprecate, Windows.Foundation.UniversalApiContract, 3.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass UnconstrainedTransferRequestResult
            {
                [default] interface Windows.Networking.BackgroundTransfer.IUnconstrainedTransferRequestResult;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass UploadOperation
            {
                [default] interface Windows.Networking.BackgroundTransfer.IUploadOperation;
                interface Windows.Networking.BackgroundTransfer.IBackgroundTransferOperation;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Networking.BackgroundTransfer.IBackgroundTransferOperationPriority;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Networking.BackgroundTransfer.IUploadOperation2;
                [contract(Windows.Foundation.UniversalApiContract, 6.0)] interface Windows.Networking.BackgroundTransfer.IUploadOperation3;
                [contract(Windows.Foundation.UniversalApiContract, 10.0)] interface Windows.Networking.BackgroundTransfer.IUploadOperation4;
            }
        }
    }
}
