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

// Forward Declare
namespace Windows
{
    namespace ApplicationModel
    {
        runtimeclass Package;

        typedef enum PackageContentGroupState PackageContentGroupState;
    }
}
namespace Windows
{
    namespace Foundation
    {
        interface IAsyncAction;

        apicontract UniversalApiContract;

        runtimeclass Uri;
    }
}
namespace Windows
{
    namespace Management
    {
        namespace Deployment
        {
            typedef enum AddPackageByAppInstallerOptions AddPackageByAppInstallerOptions;

            typedef enum DeploymentOptions DeploymentOptions;

            typedef enum DeploymentProgressState DeploymentProgressState;

            typedef enum PackageInstallState PackageInstallState;

            typedef enum PackageState PackageState;

            typedef enum PackageStatus PackageStatus;

            typedef enum PackageTypes PackageTypes;

            typedef enum RemovalOptions RemovalOptions;

            typedef struct DeploymentProgress DeploymentProgress;

            interface IDeploymentResult;

            interface IDeploymentResult2;

            interface IPackageManager;

            interface IPackageManager2;

            interface IPackageManager3;

            interface IPackageManager4;

            interface IPackageManager5;

            interface IPackageManager6;

            interface IPackageManager7;

            interface IPackageManager8;

            interface IPackageManagerDebugSettings;

            interface IPackageUserInformation;

            interface IPackageVolume;

            interface IPackageVolume2;

            runtimeclass DeploymentResult;

            runtimeclass PackageManager;

            runtimeclass PackageManagerDebugSettings;

            runtimeclass PackageUserInformation;

            runtimeclass PackageVolume;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Management
    {
        namespace Deployment
        {
            declare
            {
                interface Windows.Foundation.Collections.IIterable<Windows.Management.Deployment.PackageUserInformation*>;

                interface Windows.Foundation.Collections.IIterable<Windows.Management.Deployment.PackageVolume*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Management.Deployment.PackageUserInformation*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Management.Deployment.PackageVolume*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Management.Deployment.PackageVolume*>;

                interface Windows.Foundation.IAsyncOperationWithProgress<Windows.Management.Deployment.DeploymentResult*, Windows.Management.Deployment.DeploymentProgress>;

                interface Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.Management.Deployment.PackageVolume*>*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Management.Deployment.PackageVolume*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Management
    {
        namespace Deployment
        {
            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            [flags]
            enum AddPackageByAppInstallerOptions
            {
                None                     = 0x0,
                InstallAllResources      = 0x20,
                ForceTargetAppShutdown   = 0x40,
                RequiredContentGroupOnly = 0x100
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [flags]
            enum DeploymentOptions
            {
                None                           = 0x0,
                ForceApplicationShutdown       = 0x1,
                DevelopmentMode                = 0x2,
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                InstallAllResources            = 0x20,
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                ForceTargetApplicationShutdown = 0x40,
                [contract(Windows.Foundation.UniversalApiContract, 4.0)]
                RequiredContentGroupOnly       = 0x100,
                [contract(Windows.Foundation.UniversalApiContract, 7.0)]
                ForceUpdateFromAnyVersion      = 0x40000
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum DeploymentProgressState
            {
                Queued     = 0,
                Processing = 1
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum PackageInstallState
            {
                NotInstalled = 0,
                Staged       = 1,
                Installed    = 2,
                [contract(Windows.Foundation.UniversalApiContract, 2.0)]
                Paused       = 6
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum PackageState
            {
                Normal         = 0,
                LicenseInvalid = 1,
                Modified       = 2,
                Tampered       = 3
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [flags]
            enum PackageStatus
            {
                OK           = 0x0,
                LicenseIssue = 0x1,
                Modified     = 0x2,
                Tampered     = 0x4,
                Disabled     = 0x8
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [flags]
            enum PackageTypes
            {
                None      = 0x0,
                Main      = 0x1,
                Framework = 0x2,
                Resource  = 0x4,
                Bundle    = 0x8,
                [contract(Windows.Foundation.UniversalApiContract, 1.0)]
                Xap       = 0x10,
                [contract(Windows.Foundation.UniversalApiContract, 3.0)]
                Optional  = 0x20
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [flags]
            enum RemovalOptions
            {
                None                    = 0x0,
                PreserveApplicationData = 0x1000,
                [contract(Windows.Foundation.UniversalApiContract, 7.0)]
                RemoveForAllUsers       = 0x80000
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            struct DeploymentProgress
            {
                Windows.Management.Deployment.DeploymentProgressState state;
                UINT32 percentage;
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Management.Deployment.DeploymentResult)]
            [uuid(2563B9AE-B77D-4C1F-8A7B-20E6AD515EF3)]
            interface IDeploymentResult : IInspectable
            {
                [propget] HRESULT ErrorText([out] [retval] HSTRING* value);
                [propget] HRESULT ActivityId([out] [retval] GUID* value);
                [propget] HRESULT ExtendedErrorCode([out] [retval] HRESULT* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.Management.Deployment.DeploymentResult)]
            [uuid(FC0E715C-5A01-4BD7-BCF1-381C8C82E04A)]
            interface IDeploymentResult2 : IInspectable
            {
                [propget] HRESULT IsRegistered([out] [retval] boolean* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Management.Deployment.PackageManager)]
            [uuid(9A7D4B65-5E8F-4FC7-A2E5-7F6925CB8B53)]
            interface IPackageManager : IInspectable
            {
                [overload("AddPackageAsync")] HRESULT AddPackageAsync([in] Windows.Foundation.Uri* packageUri, [in] Windows.Foundation.Collections.IIterable<Windows.Foundation.Uri*>* dependencyPackageUris, [in] Windows.Management.Deployment.DeploymentOptions deploymentOptions, [out] [retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.Management.Deployment.DeploymentResult*, Windows.Management.Deployment.DeploymentProgress>** deploymentOperation);
                HRESULT UpdatePackageAsync([in] Windows.Foundation.Uri* packageUri, [in] Windows.Foundation.Collections.IIterable<Windows.Foundation.Uri*>* dependencyPackageUris, [in] Windows.Management.Deployment.DeploymentOptions deploymentOptions, [out] [retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.Management.Deployment.DeploymentResult*, Windows.Management.Deployment.DeploymentProgress>** deploymentOperation);
                HRESULT RemovePackageAsync([in] HSTRING packageFullName, [out] [retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.Management.Deployment.DeploymentResult*, Windows.Management.Deployment.DeploymentProgress>** deploymentOperation);
                HRESULT StagePackageAsync([in] Windows.Foundation.Uri* packageUri, [in] Windows.Foundation.Collections.IIterable<Windows.Foundation.Uri*>* dependencyPackageUris, [out] [retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.Management.Deployment.DeploymentResult*, Windows.Management.Deployment.DeploymentProgress>** deploymentOperation);
                [overload("RegisterPackageAsync")] HRESULT RegisterPackageAsync([in] Windows.Foundation.Uri* manifestUri, [in] Windows.Foundation.Collections.IIterable<Windows.Foundation.Uri*>* dependencyPackageUris, [in] Windows.Management.Deployment.DeploymentOptions deploymentOptions, [out] [retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.Management.Deployment.DeploymentResult*, Windows.Management.Deployment.DeploymentProgress>** deploymentOperation);
                [overload("FindPackages")] HRESULT FindPackages([out] [retval] Windows.Foundation.Collections.IIterable<Windows.ApplicationModel.Package*>** packageCollection);
                [overload("FindPackagesForUser")] HRESULT FindPackagesByUserSecurityId([in] HSTRING userSecurityId, [out] [retval] Windows.Foundation.Collections.IIterable<Windows.ApplicationModel.Package*>** packageCollection);
                [overload("FindPackages")] HRESULT FindPackagesByNamePublisher([in] HSTRING packageName, [in] HSTRING packagePublisher, [out] [retval] Windows.Foundation.Collections.IIterable<Windows.ApplicationModel.Package*>** packageCollection);
                [overload("FindPackagesForUser")] HRESULT FindPackagesByUserSecurityIdNamePublisher([in] HSTRING userSecurityId, [in] HSTRING packageName, [in] HSTRING packagePublisher, [out] [retval] Windows.Foundation.Collections.IIterable<Windows.ApplicationModel.Package*>** packageCollection);
                HRESULT FindUsers([in] HSTRING packageFullName, [out] [retval] Windows.Foundation.Collections.IIterable<Windows.Management.Deployment.PackageUserInformation*>** users);
                HRESULT SetPackageState([in] HSTRING packageFullName, [in] Windows.Management.Deployment.PackageState packageState);
                [overload("FindPackage")] HRESULT FindPackageByPackageFullName([in] HSTRING packageFullName, [out] [retval] Windows.ApplicationModel.Package** packageInformation);
                HRESULT CleanupPackageForUserAsync([in] HSTRING packageName, [in] HSTRING userSecurityId, [out] [retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.Management.Deployment.DeploymentResult*, Windows.Management.Deployment.DeploymentProgress>** deploymentOperation);
                [overload("FindPackages")] HRESULT FindPackagesByPackageFamilyName([in] HSTRING packageFamilyName, [out] [retval] Windows.Foundation.Collections.IIterable<Windows.ApplicationModel.Package*>** packageCollection);
                [overload("FindPackagesForUser")] HRESULT FindPackagesByUserSecurityIdPackageFamilyName([in] HSTRING userSecurityId, [in] HSTRING packageFamilyName, [out] [retval] Windows.Foundation.Collections.IIterable<Windows.ApplicationModel.Package*>** packageCollection);
                [overload("FindPackageForUser")] HRESULT FindPackageByUserSecurityIdPackageFullName([in] HSTRING userSecurityId, [in] HSTRING packageFullName, [out] [retval] Windows.ApplicationModel.Package** packageInformation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Management.Deployment.PackageManager)]
            [uuid(F7AAD08D-0840-46F2-B5D8-CAD47693A095)]
            interface IPackageManager2 : IInspectable
            {
                [overload("RemovePackageAsync")] HRESULT RemovePackageWithOptionsAsync([in] HSTRING packageFullName, [in] Windows.Management.Deployment.RemovalOptions removalOptions, [out] [retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.Management.Deployment.DeploymentResult*, Windows.Management.Deployment.DeploymentProgress>** deploymentOperation);
                [overload("StagePackageAsync")] HRESULT StagePackageWithOptionsAsync([in] Windows.Foundation.Uri* packageUri, [in] Windows.Foundation.Collections.IIterable<Windows.Foundation.Uri*>* dependencyPackageUris, [in] Windows.Management.Deployment.DeploymentOptions deploymentOptions, [out] [retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.Management.Deployment.DeploymentResult*, Windows.Management.Deployment.DeploymentProgress>** deploymentOperation);
                HRESULT RegisterPackageByFullNameAsync([in] HSTRING mainPackageFullName, [in] Windows.Foundation.Collections.IIterable<HSTRING>* dependencyPackageFullNames, [in] Windows.Management.Deployment.DeploymentOptions deploymentOptions, [out] [retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.Management.Deployment.DeploymentResult*, Windows.Management.Deployment.DeploymentProgress>** deploymentOperation);
                [overload("FindPackagesWithPackageTypes")] HRESULT FindPackagesWithPackageTypes([in] Windows.Management.Deployment.PackageTypes packageTypes, [out] [retval] Windows.Foundation.Collections.IIterable<Windows.ApplicationModel.Package*>** packageCollection);
                [overload("FindPackagesForUserWithPackageTypes")] HRESULT FindPackagesByUserSecurityIdWithPackageTypes([in] HSTRING userSecurityId, [in] Windows.Management.Deployment.PackageTypes packageTypes, [out] [retval] Windows.Foundation.Collections.IIterable<Windows.ApplicationModel.Package*>** packageCollection);
                [overload("FindPackagesWithPackageTypes")] HRESULT FindPackagesByNamePublisherWithPackageTypes([in] HSTRING packageName, [in] HSTRING packagePublisher, [in] Windows.Management.Deployment.PackageTypes packageTypes, [out] [retval] Windows.Foundation.Collections.IIterable<Windows.ApplicationModel.Package*>** packageCollection);
                [overload("FindPackagesForUserWithPackageTypes")] HRESULT FindPackagesByUserSecurityIdNamePublisherWithPackageTypes([in] HSTRING userSecurityId, [in] HSTRING packageName, [in] HSTRING packagePublisher, [in] Windows.Management.Deployment.PackageTypes packageTypes, [out] [retval] Windows.Foundation.Collections.IIterable<Windows.ApplicationModel.Package*>** packageCollection);
                [overload("FindPackagesWithPackageTypes")] HRESULT FindPackagesByPackageFamilyNameWithPackageTypes([in] HSTRING packageFamilyName, [in] Windows.Management.Deployment.PackageTypes packageTypes, [out] [retval] Windows.Foundation.Collections.IIterable<Windows.ApplicationModel.Package*>** packageCollection);
                [overload("FindPackagesForUserWithPackageTypes")] HRESULT FindPackagesByUserSecurityIdPackageFamilyNameWithPackageTypes([in] HSTRING userSecurityId, [in] HSTRING packageFamilyName, [in] Windows.Management.Deployment.PackageTypes packageTypes, [out] [retval] Windows.Foundation.Collections.IIterable<Windows.ApplicationModel.Package*>** packageCollection);
                [overload("StageUserDataAsync")] HRESULT StageUserDataAsync([in] HSTRING packageFullName, [out] [retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.Management.Deployment.DeploymentResult*, Windows.Management.Deployment.DeploymentProgress>** deploymentOperation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Management.Deployment.PackageManager)]
            [uuid(DAAD9948-36F1-41A7-9188-BC263E0DCB72)]
            interface IPackageManager3 : IInspectable
            {
                HRESULT AddPackageVolumeAsync([in] HSTRING packageStorePath, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Management.Deployment.PackageVolume*>** packageVolume);
                [overload("AddPackageAsync")] HRESULT AddPackageToVolumeAsync([in] Windows.Foundation.Uri* packageUri, [in] Windows.Foundation.Collections.IIterable<Windows.Foundation.Uri*>* dependencyPackageUris, [in] Windows.Management.Deployment.DeploymentOptions deploymentOptions, [in] Windows.Management.Deployment.PackageVolume* targetVolume, [out] [retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.Management.Deployment.DeploymentResult*, Windows.Management.Deployment.DeploymentProgress>** deploymentOperation);
                HRESULT ClearPackageStatus([in] HSTRING packageFullName, [in] Windows.Management.Deployment.PackageStatus status);
                [overload("RegisterPackageAsync")] HRESULT RegisterPackageWithAppDataVolumeAsync([in] Windows.Foundation.Uri* manifestUri, [in] Windows.Foundation.Collections.IIterable<Windows.Foundation.Uri*>* dependencyPackageUris, [in] Windows.Management.Deployment.DeploymentOptions deploymentOptions, [in] Windows.Management.Deployment.PackageVolume* appDataVolume, [out] [retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.Management.Deployment.DeploymentResult*, Windows.Management.Deployment.DeploymentProgress>** deploymentOperation);
                [overload("FindPackageVolume")] HRESULT FindPackageVolumeByName([in] HSTRING volumeName, [out] [retval] Windows.Management.Deployment.PackageVolume** volume);
                HRESULT FindPackageVolumes([out] [retval] Windows.Foundation.Collections.IIterable<Windows.Management.Deployment.PackageVolume*>** volumeCollection);
                HRESULT GetDefaultPackageVolume([out] [retval] Windows.Management.Deployment.PackageVolume** volume);
                HRESULT MovePackageToVolumeAsync([in] HSTRING packageFullName, [in] Windows.Management.Deployment.DeploymentOptions deploymentOptions, [in] Windows.Management.Deployment.PackageVolume* targetVolume, [out] [retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.Management.Deployment.DeploymentResult*, Windows.Management.Deployment.DeploymentProgress>** deploymentOperation);
                HRESULT RemovePackageVolumeAsync([in] Windows.Management.Deployment.PackageVolume* volume, [out] [retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.Management.Deployment.DeploymentResult*, Windows.Management.Deployment.DeploymentProgress>** deploymentOperation);
                HRESULT SetDefaultPackageVolume([in] Windows.Management.Deployment.PackageVolume* volume);
                HRESULT SetPackageStatus([in] HSTRING packageFullName, [in] Windows.Management.Deployment.PackageStatus status);
                HRESULT SetPackageVolumeOfflineAsync([in] Windows.Management.Deployment.PackageVolume* packageVolume, [out] [retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.Management.Deployment.DeploymentResult*, Windows.Management.Deployment.DeploymentProgress>** deploymentOperation);
                HRESULT SetPackageVolumeOnlineAsync([in] Windows.Management.Deployment.PackageVolume* packageVolume, [out] [retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.Management.Deployment.DeploymentResult*, Windows.Management.Deployment.DeploymentProgress>** deploymentOperation);
                [overload("StagePackageAsync")] HRESULT StagePackageToVolumeAsync([in] Windows.Foundation.Uri* packageUri, [in] Windows.Foundation.Collections.IIterable<Windows.Foundation.Uri*>* dependencyPackageUris, [in] Windows.Management.Deployment.DeploymentOptions deploymentOptions, [in] Windows.Management.Deployment.PackageVolume* targetVolume, [out] [retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.Management.Deployment.DeploymentResult*, Windows.Management.Deployment.DeploymentProgress>** deploymentOperation);
                [overload("StageUserDataAsync")] HRESULT StageUserDataWithOptionsAsync([in] HSTRING packageFullName, [in] Windows.Management.Deployment.DeploymentOptions deploymentOptions, [out] [retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.Management.Deployment.DeploymentResult*, Windows.Management.Deployment.DeploymentProgress>** deploymentOperation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [exclusiveto(Windows.Management.Deployment.PackageManager)]
            [uuid(3C719963-BAB6-46BF-8FF7-DA4719230AE6)]
            interface IPackageManager4 : IInspectable
            {
                HRESULT GetPackageVolumesAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.Management.Deployment.PackageVolume*>*>** operation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.Management.Deployment.PackageManager)]
            [uuid(711F3117-1AFD-4313-978C-9BB6E1B864A7)]
            interface IPackageManager5 : IInspectable
            {
                [default_overload] [overload("AddPackageAsync")] HRESULT AddPackageToVolumeAndOptionalPackagesAsync([in] Windows.Foundation.Uri* packageUri, [in] Windows.Foundation.Collections.IIterable<Windows.Foundation.Uri*>* dependencyPackageUris, [in] Windows.Management.Deployment.DeploymentOptions deploymentOptions, [in] Windows.Management.Deployment.PackageVolume* targetVolume, [in] Windows.Foundation.Collections.IIterable<HSTRING>* optionalPackageFamilyNames, [in] Windows.Foundation.Collections.IIterable<Windows.Foundation.Uri*>* externalPackageUris, [out] [retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.Management.Deployment.DeploymentResult*, Windows.Management.Deployment.DeploymentProgress>** deploymentOperation);
                [default_overload] [overload("StagePackageAsync")] HRESULT StagePackageToVolumeAndOptionalPackagesAsync([in] Windows.Foundation.Uri* packageUri, [in] Windows.Foundation.Collections.IIterable<Windows.Foundation.Uri*>* dependencyPackageUris, [in] Windows.Management.Deployment.DeploymentOptions deploymentOptions, [in] Windows.Management.Deployment.PackageVolume* targetVolume, [in] Windows.Foundation.Collections.IIterable<HSTRING>* optionalPackageFamilyNames, [in] Windows.Foundation.Collections.IIterable<Windows.Foundation.Uri*>* externalPackageUris, [out] [retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.Management.Deployment.DeploymentResult*, Windows.Management.Deployment.DeploymentProgress>** deploymentOperation);
                [overload("RegisterPackageByFamilyNameAsync")] HRESULT RegisterPackageByFamilyNameAndOptionalPackagesAsync([in] HSTRING mainPackageFamilyName, [in] Windows.Foundation.Collections.IIterable<HSTRING>* dependencyPackageFamilyNames, [in] Windows.Management.Deployment.DeploymentOptions deploymentOptions, [in] Windows.Management.Deployment.PackageVolume* appDataVolume, [in] Windows.Foundation.Collections.IIterable<HSTRING>* optionalPackageFamilyNames, [out] [retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.Management.Deployment.DeploymentResult*, Windows.Management.Deployment.DeploymentProgress>** deploymentOperation);
                [propget] HRESULT DebugSettings([out] [retval] Windows.Management.Deployment.PackageManagerDebugSettings** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 5.0)]
            [exclusiveto(Windows.Management.Deployment.PackageManager)]
            [uuid(0847E909-53CD-4E4F-832E-57D180F6E447)]
            interface IPackageManager6 : IInspectable
            {
                HRESULT ProvisionPackageForAllUsersAsync([in] HSTRING packageFamilyName, [out] [retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.Management.Deployment.DeploymentResult*, Windows.Management.Deployment.DeploymentProgress>** operation);
                HRESULT AddPackageByAppInstallerFileAsync([in] Windows.Foundation.Uri* appInstallerFileUri, [in] Windows.Management.Deployment.AddPackageByAppInstallerOptions options, [in] Windows.Management.Deployment.PackageVolume* targetVolume, [out] [retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.Management.Deployment.DeploymentResult*, Windows.Management.Deployment.DeploymentProgress>** operation);
                HRESULT RequestAddPackageByAppInstallerFileAsync([in] Windows.Foundation.Uri* appInstallerFileUri, [in] Windows.Management.Deployment.AddPackageByAppInstallerOptions options, [in] Windows.Management.Deployment.PackageVolume* targetVolume, [out] [retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.Management.Deployment.DeploymentResult*, Windows.Management.Deployment.DeploymentProgress>** operation);
                [overload("AddPackageAsync")] HRESULT AddPackageToVolumeAndRelatedSetAsync([in] Windows.Foundation.Uri* packageUri, [in] Windows.Foundation.Collections.IIterable<Windows.Foundation.Uri*>* dependencyPackageUris, [in] Windows.Management.Deployment.DeploymentOptions options, [in] Windows.Management.Deployment.PackageVolume* targetVolume, [in] Windows.Foundation.Collections.IIterable<HSTRING>* optionalPackageFamilyNames, [in] Windows.Foundation.Collections.IIterable<Windows.Foundation.Uri*>* packageUrisToInstall, [in] Windows.Foundation.Collections.IIterable<Windows.Foundation.Uri*>* relatedPackageUris, [out] [retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.Management.Deployment.DeploymentResult*, Windows.Management.Deployment.DeploymentProgress>** operation);
                [overload("StagePackageAsync")] HRESULT StagePackageToVolumeAndRelatedSetAsync([in] Windows.Foundation.Uri* packageUri, [in] Windows.Foundation.Collections.IIterable<Windows.Foundation.Uri*>* dependencyPackageUris, [in] Windows.Management.Deployment.DeploymentOptions options, [in] Windows.Management.Deployment.PackageVolume* targetVolume, [in] Windows.Foundation.Collections.IIterable<HSTRING>* optionalPackageFamilyNames, [in] Windows.Foundation.Collections.IIterable<Windows.Foundation.Uri*>* packageUrisToInstall, [in] Windows.Foundation.Collections.IIterable<Windows.Foundation.Uri*>* relatedPackageUris, [out] [retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.Management.Deployment.DeploymentResult*, Windows.Management.Deployment.DeploymentProgress>** operation);
                HRESULT RequestAddPackageAsync([in] Windows.Foundation.Uri* packageUri, [in] Windows.Foundation.Collections.IIterable<Windows.Foundation.Uri*>* dependencyPackageUris, [in] Windows.Management.Deployment.DeploymentOptions deploymentOptions, [in] Windows.Management.Deployment.PackageVolume* targetVolume, [in] Windows.Foundation.Collections.IIterable<HSTRING>* optionalPackageFamilyNames, [in] Windows.Foundation.Collections.IIterable<Windows.Foundation.Uri*>* relatedPackageUris, [out] [retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.Management.Deployment.DeploymentResult*, Windows.Management.Deployment.DeploymentProgress>** operation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 6.0)]
            [exclusiveto(Windows.Management.Deployment.PackageManager)]
            [uuid(F28654F4-2BA7-4B80-88D6-BE15F9A23FBA)]
            interface IPackageManager7 : IInspectable
            {
                [overload("RequestAddPackageAsync")] HRESULT RequestAddPackageAndRelatedSetAsync([in] Windows.Foundation.Uri* packageUri, [in] Windows.Foundation.Collections.IIterable<Windows.Foundation.Uri*>* dependencyPackageUris, [in] Windows.Management.Deployment.DeploymentOptions deploymentOptions, [in] Windows.Management.Deployment.PackageVolume* targetVolume, [in] Windows.Foundation.Collections.IIterable<HSTRING>* optionalPackageFamilyNames, [in] Windows.Foundation.Collections.IIterable<Windows.Foundation.Uri*>* relatedPackageUris, [in] Windows.Foundation.Collections.IIterable<Windows.Foundation.Uri*>* packageUrisToInstall, [out] [retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.Management.Deployment.DeploymentResult*, Windows.Management.Deployment.DeploymentProgress>** operation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 7.0)]
            [exclusiveto(Windows.Management.Deployment.PackageManager)]
            [uuid(B8575330-1298-4EE2-80EE-7F659C5D2782)]
            interface IPackageManager8 : IInspectable
            {
                HRESULT DeprovisionPackageForAllUsersAsync([in] HSTRING packageFamilyName, [out] [retval] Windows.Foundation.IAsyncOperationWithProgress<Windows.Management.Deployment.DeploymentResult*, Windows.Management.Deployment.DeploymentProgress>** operation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [exclusiveto(Windows.Management.Deployment.PackageManagerDebugSettings)]
            [uuid(1A611683-A988-4FCF-8F0F-CE175898E8EB)]
            interface IPackageManagerDebugSettings : IInspectable
            {
                [overload("SetContentGroupStateAsync")] HRESULT SetContentGroupStateAsync([in] Windows.ApplicationModel.Package* package, [in] HSTRING contentGroupName, [in] Windows.ApplicationModel.PackageContentGroupState state, [out] [retval] Windows.Foundation.IAsyncAction** action);
                [overload("SetContentGroupStateAsync")] HRESULT SetContentGroupStateWithPercentageAsync([in] Windows.ApplicationModel.Package* package, [in] HSTRING contentGroupName, [in] Windows.ApplicationModel.PackageContentGroupState state, [in] DOUBLE completionPercentage, [out] [retval] Windows.Foundation.IAsyncAction** action);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Management.Deployment.PackageUserInformation)]
            [uuid(F6383423-FA09-4CBC-9055-15CA275E2E7E)]
            interface IPackageUserInformation : IInspectable
            {
                [propget] HRESULT UserSecurityId([out] [retval] HSTRING* value);
                [propget] HRESULT InstallState([out] [retval] Windows.Management.Deployment.PackageInstallState* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.Management.Deployment.PackageVolume)]
            [uuid(CF2672C3-1A40-4450-9739-2ACE2E898853)]
            interface IPackageVolume : IInspectable
            {
                [propget] HRESULT IsOffline([out] [retval] boolean* value);
                [propget] HRESULT IsSystemVolume([out] [retval] boolean* value);
                [propget] HRESULT MountPoint([out] [retval] HSTRING* value);
                [propget] HRESULT Name([out] [retval] HSTRING* value);
                [propget] HRESULT PackageStorePath([out] [retval] HSTRING* value);
                [propget] HRESULT SupportsHardLinks([out] [retval] boolean* value);
                [overload("FindPackages")] HRESULT FindPackages([out] [retval] Windows.Foundation.Collections.IVector<Windows.ApplicationModel.Package*>** packageCollection);
                [overload("FindPackages")] HRESULT FindPackagesByNamePublisher([in] HSTRING packageName, [in] HSTRING packagePublisher, [out] [retval] Windows.Foundation.Collections.IVector<Windows.ApplicationModel.Package*>** packageCollection);
                [overload("FindPackages")] HRESULT FindPackagesByPackageFamilyName([in] HSTRING packageFamilyName, [out] [retval] Windows.Foundation.Collections.IVector<Windows.ApplicationModel.Package*>** packageCollection);
                [overload("FindPackagesWithPackageTypes")] HRESULT FindPackagesWithPackageTypes([in] Windows.Management.Deployment.PackageTypes packageTypes, [out] [retval] Windows.Foundation.Collections.IVector<Windows.ApplicationModel.Package*>** packageCollection);
                [overload("FindPackagesWithPackageTypes")] HRESULT FindPackagesByNamePublisherWithPackagesTypes([in] Windows.Management.Deployment.PackageTypes packageTypes, [in] HSTRING packageName, [in] HSTRING packagePublisher, [out] [retval] Windows.Foundation.Collections.IVector<Windows.ApplicationModel.Package*>** packageCollection);
                [overload("FindPackagesWithPackageTypes")] HRESULT FindPackagesByPackageFamilyNameWithPackageTypes([in] Windows.Management.Deployment.PackageTypes packageTypes, [in] HSTRING packageFamilyName, [out] [retval] Windows.Foundation.Collections.IVector<Windows.ApplicationModel.Package*>** packageCollection);
                [overload("FindPackage")] HRESULT FindPackageByPackageFullName([in] HSTRING packageFullName, [out] [retval] Windows.Foundation.Collections.IVector<Windows.ApplicationModel.Package*>** packageCollection);
                [overload("FindPackagesForUser")] HRESULT FindPackagesByUserSecurityId([in] HSTRING userSecurityId, [out] [retval] Windows.Foundation.Collections.IVector<Windows.ApplicationModel.Package*>** packageCollection);
                [overload("FindPackagesForUser")] HRESULT FindPackagesByUserSecurityIdNamePublisher([in] HSTRING userSecurityId, [in] HSTRING packageName, [in] HSTRING packagePublisher, [out] [retval] Windows.Foundation.Collections.IVector<Windows.ApplicationModel.Package*>** packageCollection);
                [overload("FindPackagesForUser")] HRESULT FindPackagesByUserSecurityIdPackageFamilyName([in] HSTRING userSecurityId, [in] HSTRING packageFamilyName, [out] [retval] Windows.Foundation.Collections.IVector<Windows.ApplicationModel.Package*>** packageCollection);
                [overload("FindPackagesForUserWithPackageTypes")] HRESULT FindPackagesByUserSecurityIdWithPackageTypes([in] HSTRING userSecurityId, [in] Windows.Management.Deployment.PackageTypes packageTypes, [out] [retval] Windows.Foundation.Collections.IVector<Windows.ApplicationModel.Package*>** packageCollection);
                [overload("FindPackagesForUserWithPackageTypes")] HRESULT FindPackagesByUserSecurityIdNamePublisherWithPackageTypes([in] HSTRING userSecurityId, [in] Windows.Management.Deployment.PackageTypes packageTypes, [in] HSTRING packageName, [in] HSTRING packagePublisher, [out] [retval] Windows.Foundation.Collections.IVector<Windows.ApplicationModel.Package*>** packageCollection);
                [overload("FindPackagesForUserWithPackageTypes")] HRESULT FindPackagesByUserSecurityIdPackageFamilyNameWithPackagesTypes([in] HSTRING userSecurityId, [in] Windows.Management.Deployment.PackageTypes packageTypes, [in] HSTRING packageFamilyName, [out] [retval] Windows.Foundation.Collections.IVector<Windows.ApplicationModel.Package*>** packageCollection);
                [overload("FindPackageForUser")] HRESULT FindPackageByUserSecurityIdPackageFullName([in] HSTRING userSecurityId, [in] HSTRING packageFullName, [out] [retval] Windows.Foundation.Collections.IVector<Windows.ApplicationModel.Package*>** packageCollection);
            }

            [contract(Windows.Foundation.UniversalApiContract, 3.0)]
            [exclusiveto(Windows.Management.Deployment.PackageVolume)]
            [uuid(46ABCF2E-9DD4-47A2-AB8C-C6408349BCD8)]
            interface IPackageVolume2 : IInspectable
            {
                [propget] HRESULT IsFullTrustPackageSupported([out] [retval] boolean* value);
                [propget] HRESULT IsAppxInstallSupported([out] [retval] boolean* value);
                HRESULT GetAvailableSpaceAsync([out] [retval] Windows.Foundation.IAsyncOperation<UINT64>** operation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass DeploymentResult
            {
                [default] interface Windows.Management.Deployment.IDeploymentResult;
                [contract(Windows.Foundation.UniversalApiContract, 4.0)] interface Windows.Management.Deployment.IDeploymentResult2;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass PackageManager
            {
                [default] interface Windows.Management.Deployment.IPackageManager;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Management.Deployment.IPackageManager2;
                [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.Management.Deployment.IPackageManager3;
                [contract(Windows.Foundation.UniversalApiContract, 3.0)] interface Windows.Management.Deployment.IPackageManager4;
                [contract(Windows.Foundation.UniversalApiContract, 4.0)] interface Windows.Management.Deployment.IPackageManager5;
                [contract(Windows.Foundation.UniversalApiContract, 5.0)] interface Windows.Management.Deployment.IPackageManager6;
                [contract(Windows.Foundation.UniversalApiContract, 6.0)] interface Windows.Management.Deployment.IPackageManager7;
                [contract(Windows.Foundation.UniversalApiContract, 7.0)] interface Windows.Management.Deployment.IPackageManager8;
            }

            [contract(Windows.Foundation.UniversalApiContract, 4.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass PackageManagerDebugSettings
            {
                [default] interface Windows.Management.Deployment.IPackageManagerDebugSettings;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            runtimeclass PackageUserInformation
            {
                [default] interface Windows.Management.Deployment.IPackageUserInformation;
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass PackageVolume
            {
                [default] interface Windows.Management.Deployment.IPackageVolume;
                [contract(Windows.Foundation.UniversalApiContract, 3.0)] interface Windows.Management.Deployment.IPackageVolume2;
            }
        }
    }
}
