# WARNING: Please don't edit this file. It was generated by Python/WinRT v3.0.0

import datetime
import sys
import types
import typing
import uuid as _uuid
from builtins import property as _property

import winrt._winrt
import winrt.system
import winrt.windows.foundation as windows_foundation
import winrt.windows.foundation.collections as windows_foundation_collections

from winrt.windows.management.setup import DeploymentAgentProgressState, DeploymentSessionConnectionChange, DeploymentSessionStateChange, DeploymentWorkloadState
from winrt.windows.management.setup import DeploymentSessionHeartbeatRequested

Self = typing.TypeVar('Self')

@typing.final
class AgentProvisioningProgressReport(winrt.system.Object):
    def __new__(cls: typing.Type[Self]) -> Self: ...
    # Windows.Management.Setup.DeploymentAgentProgressState Windows.Management.Setup.AgentProvisioningProgressReport::get_State()
    @_property
    def state(self) -> DeploymentAgentProgressState: ...
    # System.Void Windows.Management.Setup.AgentProvisioningProgressReport::put_State(Windows.Management.Setup.DeploymentAgentProgressState)
    @state.setter
    def state(self, value: DeploymentAgentProgressState) -> None: ...
    # System.Double Windows.Management.Setup.AgentProvisioningProgressReport::get_ProgressPercentage()
    @_property
    def progress_percentage(self) -> winrt.system.Double: ...
    # System.Void Windows.Management.Setup.AgentProvisioningProgressReport::put_ProgressPercentage(System.Double)
    @progress_percentage.setter
    def progress_percentage(self, value: winrt.system.Double) -> None: ...
    # Windows.Foundation.TimeSpan Windows.Management.Setup.AgentProvisioningProgressReport::get_EstimatedTimeRemaining()
    @_property
    def estimated_time_remaining(self) -> datetime.timedelta: ...
    # System.Void Windows.Management.Setup.AgentProvisioningProgressReport::put_EstimatedTimeRemaining(Windows.Foundation.TimeSpan)
    @estimated_time_remaining.setter
    def estimated_time_remaining(self, value: datetime.timedelta) -> None: ...
    # System.String Windows.Management.Setup.AgentProvisioningProgressReport::get_DisplayProgressSecondary()
    @_property
    def display_progress_secondary(self) -> str: ...
    # System.Void Windows.Management.Setup.AgentProvisioningProgressReport::put_DisplayProgressSecondary(System.String)
    @display_progress_secondary.setter
    def display_progress_secondary(self, value: str) -> None: ...
    # System.String Windows.Management.Setup.AgentProvisioningProgressReport::get_DisplayProgress()
    @_property
    def display_progress(self) -> str: ...
    # System.Void Windows.Management.Setup.AgentProvisioningProgressReport::put_DisplayProgress(System.String)
    @display_progress.setter
    def display_progress(self, value: str) -> None: ...
    # System.UInt32 Windows.Management.Setup.AgentProvisioningProgressReport::get_CurrentBatchIndex()
    @_property
    def current_batch_index(self) -> winrt.system.UInt32: ...
    # System.Void Windows.Management.Setup.AgentProvisioningProgressReport::put_CurrentBatchIndex(System.UInt32)
    @current_batch_index.setter
    def current_batch_index(self, value: winrt.system.UInt32) -> None: ...
    # Windows.Foundation.Collections.IVector`1<Windows.Management.Setup.DeploymentWorkloadBatch> Windows.Management.Setup.AgentProvisioningProgressReport::get_Batches()
    @_property
    def batches(self) -> typing.MutableSequence[DeploymentWorkloadBatch]: ...

@typing.final
class DeploymentSessionConnectionChangedEventArgs(winrt.system.Object):
    # Windows.Management.Setup.DeploymentSessionConnectionChange Windows.Management.Setup.DeploymentSessionConnectionChangedEventArgs::get_Change()
    @_property
    def change(self) -> DeploymentSessionConnectionChange: ...
    # System.String Windows.Management.Setup.DeploymentSessionConnectionChangedEventArgs::get_SessionId()
    @_property
    def session_id(self) -> str: ...

@typing.final
class DeploymentSessionHeartbeatRequestedEventArgs(winrt.system.Object):
    # System.Boolean Windows.Management.Setup.DeploymentSessionHeartbeatRequestedEventArgs::get_Handled()
    @_property
    def handled(self) -> bool: ...
    # System.Void Windows.Management.Setup.DeploymentSessionHeartbeatRequestedEventArgs::put_Handled(System.Boolean)
    @handled.setter
    def handled(self, value: bool) -> None: ...

@typing.final
class DeploymentSessionStateChangedEventArgs(winrt.system.Object):
    # Windows.Management.Setup.DeploymentSessionStateChange Windows.Management.Setup.DeploymentSessionStateChangedEventArgs::get_Change()
    @_property
    def change(self) -> DeploymentSessionStateChange: ...
    # System.String Windows.Management.Setup.DeploymentSessionStateChangedEventArgs::get_SessionId()
    @_property
    def session_id(self) -> str: ...

@typing.final
class DeploymentWorkload(winrt.system.Object):
    def __new__(cls: typing.Type[Self], id: str) -> Self: ...
    # System.String Windows.Management.Setup.DeploymentWorkload::get_StateDetails()
    @_property
    def state_details(self) -> str: ...
    # System.Void Windows.Management.Setup.DeploymentWorkload::put_StateDetails(System.String)
    @state_details.setter
    def state_details(self, value: str) -> None: ...
    # Windows.Management.Setup.DeploymentWorkloadState Windows.Management.Setup.DeploymentWorkload::get_State()
    @_property
    def state(self) -> DeploymentWorkloadState: ...
    # System.Void Windows.Management.Setup.DeploymentWorkload::put_State(Windows.Management.Setup.DeploymentWorkloadState)
    @state.setter
    def state(self, value: DeploymentWorkloadState) -> None: ...
    # Windows.Foundation.IReference`1<Windows.Foundation.DateTime> Windows.Management.Setup.DeploymentWorkload::get_StartTime()
    @_property
    def start_time(self) -> typing.Optional[datetime.datetime]: ...
    # System.Void Windows.Management.Setup.DeploymentWorkload::put_StartTime(Windows.Foundation.IReference`1<Windows.Foundation.DateTime>)
    @start_time.setter
    def start_time(self, value: typing.Optional[datetime.datetime]) -> None: ...
    # System.String Windows.Management.Setup.DeploymentWorkload::get_PossibleResolution()
    @_property
    def possible_resolution(self) -> str: ...
    # System.Void Windows.Management.Setup.DeploymentWorkload::put_PossibleResolution(System.String)
    @possible_resolution.setter
    def possible_resolution(self, value: str) -> None: ...
    # System.String Windows.Management.Setup.DeploymentWorkload::get_PossibleCause()
    @_property
    def possible_cause(self) -> str: ...
    # System.Void Windows.Management.Setup.DeploymentWorkload::put_PossibleCause(System.String)
    @possible_cause.setter
    def possible_cause(self, value: str) -> None: ...
    # System.String Windows.Management.Setup.DeploymentWorkload::get_ErrorMessage()
    @_property
    def error_message(self) -> str: ...
    # System.Void Windows.Management.Setup.DeploymentWorkload::put_ErrorMessage(System.String)
    @error_message.setter
    def error_message(self, value: str) -> None: ...
    # System.UInt32 Windows.Management.Setup.DeploymentWorkload::get_ErrorCode()
    @_property
    def error_code(self) -> winrt.system.UInt32: ...
    # System.Void Windows.Management.Setup.DeploymentWorkload::put_ErrorCode(System.UInt32)
    @error_code.setter
    def error_code(self, value: winrt.system.UInt32) -> None: ...
    # Windows.Foundation.IReference`1<Windows.Foundation.DateTime> Windows.Management.Setup.DeploymentWorkload::get_EndTime()
    @_property
    def end_time(self) -> typing.Optional[datetime.datetime]: ...
    # System.Void Windows.Management.Setup.DeploymentWorkload::put_EndTime(Windows.Foundation.IReference`1<Windows.Foundation.DateTime>)
    @end_time.setter
    def end_time(self, value: typing.Optional[datetime.datetime]) -> None: ...
    # System.String Windows.Management.Setup.DeploymentWorkload::get_DisplayFriendlyName()
    @_property
    def display_friendly_name(self) -> str: ...
    # System.Void Windows.Management.Setup.DeploymentWorkload::put_DisplayFriendlyName(System.String)
    @display_friendly_name.setter
    def display_friendly_name(self, value: str) -> None: ...
    # System.String Windows.Management.Setup.DeploymentWorkload::get_Id()
    @_property
    def id(self) -> str: ...

@typing.final
class DeploymentWorkloadBatch(winrt.system.Object):
    def __new__(cls: typing.Type[Self], id: winrt.system.UInt32) -> Self: ...
    # System.String Windows.Management.Setup.DeploymentWorkloadBatch::get_DisplayCategoryTitle()
    @_property
    def display_category_title(self) -> str: ...
    # System.Void Windows.Management.Setup.DeploymentWorkloadBatch::put_DisplayCategoryTitle(System.String)
    @display_category_title.setter
    def display_category_title(self, value: str) -> None: ...
    # Windows.Foundation.Collections.IVector`1<Windows.Management.Setup.DeploymentWorkload> Windows.Management.Setup.DeploymentWorkloadBatch::get_BatchWorkloads()
    @_property
    def batch_workloads(self) -> typing.MutableSequence[DeploymentWorkload]: ...
    # System.UInt32 Windows.Management.Setup.DeploymentWorkloadBatch::get_Id()
    @_property
    def id(self) -> winrt.system.UInt32: ...

@typing.final
class DevicePreparationExecutionContext(winrt.system.Object):
    # System.String Windows.Management.Setup.DevicePreparationExecutionContext::get_Context()
    @_property
    def context(self) -> str: ...

@typing.final
class MachineProvisioningProgressReporter_Static(winrt._winrt.IInspectable_Static):
    # Windows.Management.Setup.MachineProvisioningProgressReporter Windows.Management.Setup.MachineProvisioningProgressReporter::GetForLaunchUri(Windows.Foundation.Uri,Windows.Management.Setup.DeploymentSessionHeartbeatRequested)
    def get_for_launch_uri(cls, launch_uri: windows_foundation.Uri, heartbeat_handler: DeploymentSessionHeartbeatRequested, /) -> MachineProvisioningProgressReporter: ...

@typing.final
class MachineProvisioningProgressReporter(winrt.system.Object, metaclass=MachineProvisioningProgressReporter_Static):
    # Windows.Foundation.IAsyncOperation`1<Windows.Management.Setup.DevicePreparationExecutionContext> Windows.Management.Setup.MachineProvisioningProgressReporter::GetDevicePreparationExecutionContextAsync()
    def get_device_preparation_execution_context_async(self) -> windows_foundation.IAsyncOperation[DevicePreparationExecutionContext]: ...
    # System.Void Windows.Management.Setup.MachineProvisioningProgressReporter::ReportProgress(Windows.Management.Setup.AgentProvisioningProgressReport)
    def report_progress(self, update_report: AgentProvisioningProgressReport, /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Management.Setup.MachineProvisioningProgressReporter::add_SessionConnectionChanged(Windows.Foundation.TypedEventHandler`2<Windows.Management.Setup.MachineProvisioningProgressReporter,Windows.Management.Setup.DeploymentSessionConnectionChangedEventArgs>)
    def add_session_connection_changed(self, handler: windows_foundation.TypedEventHandler[MachineProvisioningProgressReporter, DeploymentSessionConnectionChangedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Management.Setup.MachineProvisioningProgressReporter::remove_SessionConnectionChanged(Windows.Foundation.EventRegistrationToken)
    def remove_session_connection_changed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Foundation.EventRegistrationToken Windows.Management.Setup.MachineProvisioningProgressReporter::add_SessionStateChanged(Windows.Foundation.TypedEventHandler`2<Windows.Management.Setup.MachineProvisioningProgressReporter,Windows.Management.Setup.DeploymentSessionStateChangedEventArgs>)
    def add_session_state_changed(self, handler: windows_foundation.TypedEventHandler[MachineProvisioningProgressReporter, DeploymentSessionStateChangedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Management.Setup.MachineProvisioningProgressReporter::remove_SessionStateChanged(Windows.Foundation.EventRegistrationToken)
    def remove_session_state_changed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.Management.Setup.DeploymentSessionConnectionChange Windows.Management.Setup.MachineProvisioningProgressReporter::get_SessionConnection()
    @_property
    def session_connection(self) -> DeploymentSessionConnectionChange: ...
    # System.Guid Windows.Management.Setup.MachineProvisioningProgressReporter::get_SessionId()
    @_property
    def session_id(self) -> _uuid.UUID: ...
    # Windows.Management.Setup.DeploymentSessionStateChange Windows.Management.Setup.MachineProvisioningProgressReporter::get_SessionState()
    @_property
    def session_state(self) -> DeploymentSessionStateChange: ...

