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

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        typedef struct DateTime DateTime;

        typedef struct TimeSpan TimeSpan;

        apicontract UniversalApiContract;

        runtimeclass Uri;
    }
}
namespace Windows
{
    namespace Management
    {
        namespace Setup
        {
            typedef enum DeploymentAgentProgressState DeploymentAgentProgressState;

            typedef enum DeploymentSessionConnectionChange DeploymentSessionConnectionChange;

            typedef enum DeploymentSessionStateChange DeploymentSessionStateChange;

            typedef enum DeploymentWorkloadState DeploymentWorkloadState;

            delegate DeploymentSessionHeartbeatRequested;

            interface IAgentProvisioningProgressReport;

            interface IDeploymentSessionConnectionChangedEventArgs;

            interface IDeploymentSessionHeartbeatRequestedEventArgs;

            interface IDeploymentSessionStateChangedEventArgs;

            interface IDeploymentWorkload;

            interface IDeploymentWorkloadBatch;

            interface IDeploymentWorkloadBatchFactory;

            interface IDeploymentWorkloadFactory;

            interface IDevicePreparationExecutionContext;

            interface IMachineProvisioningProgressReporter;

            interface IMachineProvisioningProgressReporterStatics;

            runtimeclass AgentProvisioningProgressReport;

            runtimeclass DeploymentSessionConnectionChangedEventArgs;

            runtimeclass DeploymentSessionHeartbeatRequestedEventArgs;

            runtimeclass DeploymentSessionStateChangedEventArgs;

            runtimeclass DeploymentWorkload;

            runtimeclass DeploymentWorkloadBatch;

            runtimeclass DevicePreparationExecutionContext;

            runtimeclass MachineProvisioningProgressReporter;
        }
    }
}

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

                interface Windows.Foundation.Collections.IIterable<Windows.Management.Setup.DeploymentWorkloadBatch*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Management.Setup.DeploymentWorkload*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Management.Setup.DeploymentWorkloadBatch*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Management.Setup.DeploymentWorkload*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Management.Setup.DeploymentWorkloadBatch*>;

                interface Windows.Foundation.Collections.IVector<Windows.Management.Setup.DeploymentWorkload*>;

                interface Windows.Foundation.Collections.IVector<Windows.Management.Setup.DeploymentWorkloadBatch*>;

                interface Windows.Foundation.IAsyncOperation<Windows.Management.Setup.DevicePreparationExecutionContext*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Management.Setup.MachineProvisioningProgressReporter*, Windows.Management.Setup.DeploymentSessionConnectionChangedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Management.Setup.MachineProvisioningProgressReporter*, Windows.Management.Setup.DeploymentSessionStateChangedEventArgs*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Management
    {
        namespace Setup
        {
            [contract(Windows.Foundation.UniversalApiContract, 16.0)]
            enum DeploymentAgentProgressState
            {
                NotStarted     = 0,
                Initializing   = 1,
                InProgress     = 2,
                Completed      = 3,
                ErrorOccurred  = 4,
                RebootRequired = 5,
                Canceled       = 6
            };

            [contract(Windows.Foundation.UniversalApiContract, 16.0)]
            enum DeploymentSessionConnectionChange
            {
                NoChange                   = 0,
                HostConnectionLost         = 1,
                HostConnectionRestored     = 2,
                AgentConnectionLost        = 3,
                AgentConnectionRestored    = 4,
                InternetConnectionLost     = 5,
                InternetConnectionRestored = 6
            };

            [contract(Windows.Foundation.UniversalApiContract, 16.0)]
            enum DeploymentSessionStateChange
            {
                NoChange              = 0,
                CancelRequestedByUser = 1,
                RetryRequestedByUser  = 2
            };

            [contract(Windows.Foundation.UniversalApiContract, 16.0)]
            enum DeploymentWorkloadState
            {
                NotStarted     = 0,
                InProgress     = 1,
                Completed      = 2,
                Failed         = 3,
                Canceled       = 4,
                Skipped        = 5,
                Uninstalled    = 6,
                RebootRequired = 7
            };

            [contract(Windows.Foundation.UniversalApiContract, 16.0)]
            [uuid(C94A770B-5B05-4595-9E69-79070484377E)]
            delegate
                HRESULT DeploymentSessionHeartbeatRequested([in] Windows.Management.Setup.DeploymentSessionHeartbeatRequestedEventArgs* eventArgs);

            [contract(Windows.Foundation.UniversalApiContract, 16.0)]
            [exclusiveto(Windows.Management.Setup.AgentProvisioningProgressReport)]
            [uuid(5097398A-70CC-5181-A7AF-D31C167323D1)]
            interface IAgentProvisioningProgressReport : IInspectable
            {
                [propget] HRESULT State([out] [retval] Windows.Management.Setup.DeploymentAgentProgressState* value);
                [propput] HRESULT State([in] Windows.Management.Setup.DeploymentAgentProgressState value);
                [propget] HRESULT ProgressPercentage([out] [retval] DOUBLE* value);
                [propput] HRESULT ProgressPercentage([in] DOUBLE value);
                [propget] HRESULT EstimatedTimeRemaining([out] [retval] Windows.Foundation.TimeSpan* value);
                [propput] HRESULT EstimatedTimeRemaining([in] Windows.Foundation.TimeSpan value);
                [propget] HRESULT DisplayProgress([out] [retval] HSTRING* value);
                [propput] HRESULT DisplayProgress([in] HSTRING value);
                [propget] HRESULT DisplayProgressSecondary([out] [retval] HSTRING* value);
                [propput] HRESULT DisplayProgressSecondary([in] HSTRING value);
                [propget] HRESULT Batches([out] [retval] Windows.Foundation.Collections.IVector<Windows.Management.Setup.DeploymentWorkloadBatch*>** value);
                [propget] HRESULT CurrentBatchIndex([out] [retval] UINT32* value);
                [propput] HRESULT CurrentBatchIndex([in] UINT32 value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 16.0)]
            [exclusiveto(Windows.Management.Setup.DeploymentSessionConnectionChangedEventArgs)]
            [uuid(8D40C631-6E4B-5D59-92F8-0DE54C2A3C6B)]
            interface IDeploymentSessionConnectionChangedEventArgs : IInspectable
            {
                [propget] HRESULT SessionId([out] [retval] HSTRING* value);
                [propget] HRESULT Change([out] [retval] Windows.Management.Setup.DeploymentSessionConnectionChange* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 16.0)]
            [exclusiveto(Windows.Management.Setup.DeploymentSessionHeartbeatRequestedEventArgs)]
            [uuid(09D81FA0-1036-58E6-B63B-FE343C45005F)]
            interface IDeploymentSessionHeartbeatRequestedEventArgs : IInspectable
            {
                [propget] HRESULT Handled([out] [retval] boolean* value);
                [propput] HRESULT Handled([in] boolean value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 16.0)]
            [exclusiveto(Windows.Management.Setup.DeploymentSessionStateChangedEventArgs)]
            [uuid(FBD3B7F3-88CB-5703-B8A5-0218DE8FED81)]
            interface IDeploymentSessionStateChangedEventArgs : IInspectable
            {
                [propget] HRESULT SessionId([out] [retval] HSTRING* value);
                [propget] HRESULT Change([out] [retval] Windows.Management.Setup.DeploymentSessionStateChange* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 16.0)]
            [exclusiveto(Windows.Management.Setup.DeploymentWorkload)]
            [uuid(1CEFD3D4-456C-50D1-9312-CC5C818FC12E)]
            interface IDeploymentWorkload : IInspectable
            {
                [propget] HRESULT Id([out] [retval] HSTRING* value);
                [propget] HRESULT DisplayFriendlyName([out] [retval] HSTRING* value);
                [propput] HRESULT DisplayFriendlyName([in] HSTRING value);
                [propget] HRESULT StartTime([out] [retval] Windows.Foundation.IReference<Windows.Foundation.DateTime>** value);
                [propput] HRESULT StartTime([in] Windows.Foundation.IReference<Windows.Foundation.DateTime>* value);
                [propget] HRESULT EndTime([out] [retval] Windows.Foundation.IReference<Windows.Foundation.DateTime>** value);
                [propput] HRESULT EndTime([in] Windows.Foundation.IReference<Windows.Foundation.DateTime>* value);
                [propget] HRESULT ErrorCode([out] [retval] UINT32* value);
                [propput] HRESULT ErrorCode([in] UINT32 value);
                [propget] HRESULT ErrorMessage([out] [retval] HSTRING* value);
                [propput] HRESULT ErrorMessage([in] HSTRING value);
                [propget] HRESULT PossibleCause([out] [retval] HSTRING* value);
                [propput] HRESULT PossibleCause([in] HSTRING value);
                [propget] HRESULT PossibleResolution([out] [retval] HSTRING* value);
                [propput] HRESULT PossibleResolution([in] HSTRING value);
                [propget] HRESULT State([out] [retval] Windows.Management.Setup.DeploymentWorkloadState* value);
                [propput] HRESULT State([in] Windows.Management.Setup.DeploymentWorkloadState value);
                [propget] HRESULT StateDetails([out] [retval] HSTRING* value);
                [propput] HRESULT StateDetails([in] HSTRING value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 16.0)]
            [exclusiveto(Windows.Management.Setup.DeploymentWorkloadBatch)]
            [uuid(5E56E3DF-B9C0-5FEE-BA3F-E89D800A9BF2)]
            interface IDeploymentWorkloadBatch : IInspectable
            {
                [propget] HRESULT Id([out] [retval] UINT32* value);
                [propget] HRESULT DisplayCategoryTitle([out] [retval] HSTRING* value);
                [propput] HRESULT DisplayCategoryTitle([in] HSTRING value);
                [propget] HRESULT BatchWorkloads([out] [retval] Windows.Foundation.Collections.IVector<Windows.Management.Setup.DeploymentWorkload*>** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 16.0)]
            [exclusiveto(Windows.Management.Setup.DeploymentWorkloadBatch)]
            [uuid(D0209697-9560-5A05-BDF6-F1AF535CB0D4)]
            interface IDeploymentWorkloadBatchFactory : IInspectable
            {
                HRESULT CreateInstance([in] UINT32 id, [out] [retval] Windows.Management.Setup.DeploymentWorkloadBatch** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 16.0)]
            [exclusiveto(Windows.Management.Setup.DeploymentWorkload)]
            [uuid(41426C72-22A3-5339-BDF1-51268169AA61)]
            interface IDeploymentWorkloadFactory : IInspectable
            {
                HRESULT CreateInstance([in] HSTRING id, [out] [retval] Windows.Management.Setup.DeploymentWorkload** value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 16.0)]
            [exclusiveto(Windows.Management.Setup.DevicePreparationExecutionContext)]
            [uuid(084F221B-2484-5E81-A4E7-83F6CAF19DC4)]
            interface IDevicePreparationExecutionContext : IInspectable
            {
                [propget] HRESULT Context([out] [retval] HSTRING* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 16.0)]
            [exclusiveto(Windows.Management.Setup.MachineProvisioningProgressReporter)]
            [uuid(EBD8677F-DFD2-59DA-AC3D-753EE1667CBB)]
            interface IMachineProvisioningProgressReporter : IInspectable
            {
                [propget] HRESULT SessionId([out] [retval] GUID* value);
                [propget] HRESULT SessionConnection([out] [retval] Windows.Management.Setup.DeploymentSessionConnectionChange* value);
                [propget] HRESULT SessionState([out] [retval] Windows.Management.Setup.DeploymentSessionStateChange* value);
                [eventadd] HRESULT SessionStateChanged([in] Windows.Foundation.TypedEventHandler<Windows.Management.Setup.MachineProvisioningProgressReporter*, Windows.Management.Setup.DeploymentSessionStateChangedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT SessionStateChanged([in] EventRegistrationToken token);
                [eventadd] HRESULT SessionConnectionChanged([in] Windows.Foundation.TypedEventHandler<Windows.Management.Setup.MachineProvisioningProgressReporter*, Windows.Management.Setup.DeploymentSessionConnectionChangedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT SessionConnectionChanged([in] EventRegistrationToken token);
                HRESULT ReportProgress([in] Windows.Management.Setup.AgentProvisioningProgressReport* updateReport);
                HRESULT GetDevicePreparationExecutionContextAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Management.Setup.DevicePreparationExecutionContext*>** operation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 16.0)]
            [exclusiveto(Windows.Management.Setup.MachineProvisioningProgressReporter)]
            [uuid(77682C17-5DA3-51FC-A042-C7B53458DDB5)]
            interface IMachineProvisioningProgressReporterStatics : IInspectable
            {
                HRESULT GetForLaunchUri([in] Windows.Foundation.Uri* launchUri, [in] Windows.Management.Setup.DeploymentSessionHeartbeatRequested* heartbeatHandler, [out] [retval] Windows.Management.Setup.MachineProvisioningProgressReporter** result);
            }

            [activatable(Windows.Foundation.UniversalApiContract, 16.0)]
            [contract(Windows.Foundation.UniversalApiContract, 16.0)]
            [marshaling_behavior(standard)]
            [threading(both)]
            runtimeclass AgentProvisioningProgressReport
            {
                [default] interface Windows.Management.Setup.IAgentProvisioningProgressReport;
            }

            [contract(Windows.Foundation.UniversalApiContract, 16.0)]
            [marshaling_behavior(standard)]
            runtimeclass DeploymentSessionConnectionChangedEventArgs
            {
                [default] interface Windows.Management.Setup.IDeploymentSessionConnectionChangedEventArgs;
            }

            [contract(Windows.Foundation.UniversalApiContract, 16.0)]
            [marshaling_behavior(standard)]
            runtimeclass DeploymentSessionHeartbeatRequestedEventArgs
            {
                [default] interface Windows.Management.Setup.IDeploymentSessionHeartbeatRequestedEventArgs;
            }

            [contract(Windows.Foundation.UniversalApiContract, 16.0)]
            [marshaling_behavior(standard)]
            runtimeclass DeploymentSessionStateChangedEventArgs
            {
                [default] interface Windows.Management.Setup.IDeploymentSessionStateChangedEventArgs;
            }

            [activatable(Windows.Management.Setup.IDeploymentWorkloadFactory, Windows.Foundation.UniversalApiContract, 16.0)]
            [contract(Windows.Foundation.UniversalApiContract, 16.0)]
            [marshaling_behavior(standard)]
            [threading(both)]
            runtimeclass DeploymentWorkload
            {
                [default] interface Windows.Management.Setup.IDeploymentWorkload;
            }

            [activatable(Windows.Management.Setup.IDeploymentWorkloadBatchFactory, Windows.Foundation.UniversalApiContract, 16.0)]
            [contract(Windows.Foundation.UniversalApiContract, 16.0)]
            [marshaling_behavior(standard)]
            [threading(both)]
            runtimeclass DeploymentWorkloadBatch
            {
                [default] interface Windows.Management.Setup.IDeploymentWorkloadBatch;
            }

            [contract(Windows.Foundation.UniversalApiContract, 16.0)]
            [marshaling_behavior(standard)]
            runtimeclass DevicePreparationExecutionContext
            {
                [default] interface Windows.Management.Setup.IDevicePreparationExecutionContext;
            }

            [contract(Windows.Foundation.UniversalApiContract, 16.0)]
            [marshaling_behavior(standard)]
            [static(Windows.Management.Setup.IMachineProvisioningProgressReporterStatics, Windows.Foundation.UniversalApiContract, 16.0)]
            [threading(both)]
            runtimeclass MachineProvisioningProgressReporter
            {
                [default] interface Windows.Management.Setup.IMachineProvisioningProgressReporter;
            }
        }
    }
}
