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

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "Windows.Foundation.idl";
import "Windows.ApplicationModel.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(__windows2Eapplicationmodel_h__)")
cpp_quote("#include <Windows.ApplicationModel.h>")
cpp_quote("#endif // !defined(__windows2Eapplicationmodel_h__)")
cpp_quote("#if defined(__cplusplus)")
cpp_quote("extern \"C\" {")
cpp_quote("#endif // defined(__cplusplus)")

// Forward Declare
namespace Windows
{
    namespace ApplicationModel
    {
        runtimeclass Package;
    }
}
namespace Windows
{
    namespace Foundation
    {
        runtimeclass Uri;
    }
}
namespace Windows
{
    namespace Management
    {
        namespace Deployment
        {
            typedef enum DeploymentProgressState DeploymentProgressState;

            typedef enum DeploymentOptions DeploymentOptions;

            typedef enum PackageInstallState PackageInstallState;

            typedef enum PackageState PackageState;

            typedef struct DeploymentProgress DeploymentProgress;

            interface IDeploymentResult;

            interface IPackageUserInformation;

            interface IPackageManager;

            runtimeclass DeploymentResult;

            runtimeclass PackageUserInformation;

            runtimeclass PackageManager;
        }
    }
}

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

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

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

// Type definition
namespace Windows
{
    namespace Management
    {
        namespace Deployment
        {
            [version(0x06020000)]
            enum DeploymentProgressState
            {
                Queued     = 0,
                Processing = 1
            };

            [flags]
            [version(0x06020000)]
            enum DeploymentOptions
            {
                None                     = 0x0,
                ForceApplicationShutdown = 0x1,
                DevelopmentMode          = 0x2
            };

            [version(0x06020000)]
            enum PackageInstallState
            {
                NotInstalled = 0,
                Staged       = 1,
                Installed    = 2
            };

            [version(0x06020000)]
            enum PackageState
            {
                Normal         = 0,
                LicenseInvalid = 1,
                Modified       = 2,
                Tampered       = 3
            };

            [version(0x06020000)]
            struct DeploymentProgress
            {
                Windows.Management.Deployment.DeploymentProgressState state;
                UINT32 percentage;
            };

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

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

            [uuid(9A7D4B65-5E8F-4FC7-A2E5-7F6925CB8B53)]
            [version(0x06020000)]
            [exclusiveto(Windows.Management.Deployment.PackageManager)]
            interface IPackageManager : IInspectable
            {
                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);
                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);
            }

            [marshaling_behavior(agile)]
            [version(0x06020000)]
            runtimeclass DeploymentResult
            {
                [default] interface Windows.Management.Deployment.IDeploymentResult;
            }

            [marshaling_behavior(agile)]
            [version(0x06020000)]
            runtimeclass PackageUserInformation
            {
                [default] interface Windows.Management.Deployment.IPackageUserInformation;
            }

            [activatable(0x06020000)]
            [version(0x06020000)]
            [threading(both)]
            [marshaling_behavior(agile)]
            runtimeclass PackageManager
            {
                [default] interface Windows.Management.Deployment.IPackageManager;
            }
        }
    }
}
