# WARNING: Please don't edit this file. It was generated by Python/WinRT v1.0.0-beta.9

import enum
import datetime
import sys
import types
import typing

import winsdk.system
import winsdk.windows.foundation
import winsdk.windows.foundation.collections

class IsolatedWindowsEnvironmentActivator(enum.IntEnum):
    SYSTEM = 0
    USER = 1

class IsolatedWindowsEnvironmentAllowedClipboardFormats(enum.IntFlag):
    NONE = 0
    TEXT = 0x1
    IMAGE = 0x2
    RTF = 0x4

class IsolatedWindowsEnvironmentAvailablePrinters(enum.IntFlag):
    NONE = 0
    LOCAL = 0x1
    NETWORK = 0x2
    SYSTEM_PRINT_TO_PDF = 0x4
    SYSTEM_PRINT_TO_XPS = 0x8

class IsolatedWindowsEnvironmentClipboardCopyPasteDirections(enum.IntFlag):
    NONE = 0
    HOST_TO_ISOLATED_WINDOWS_ENVIRONMENT = 0x1
    ISOLATED_WINDOWS_ENVIRONMENT_TO_HOST = 0x2

class IsolatedWindowsEnvironmentCreateStatus(enum.IntEnum):
    SUCCESS = 0
    FAILURE_BY_POLICY = 1
    UNKNOWN_FAILURE = 2

class IsolatedWindowsEnvironmentCreationPriority(enum.IntEnum):
    LOW = 0
    NORMAL = 1

class IsolatedWindowsEnvironmentHostError(enum.IntEnum):
    ADMIN_POLICY_IS_DISABLED_OR_NOT_PRESENT = 0
    FEATURE_NOT_INSTALLED = 1
    HARDWARE_REQUIREMENTS_NOT_MET = 2
    REBOOT_REQUIRED = 3
    UNKNOWN_ERROR = 4

class IsolatedWindowsEnvironmentLaunchFileStatus(enum.IntEnum):
    SUCCESS = 0
    UNKNOWN_FAILURE = 1
    ENVIRONMENT_UNAVAILABLE = 2
    FILE_NOT_FOUND = 3
    TIMED_OUT = 4
    ALREADY_SHARED_WITH_CONFLICTING_OPTIONS = 5

class IsolatedWindowsEnvironmentOwnerRegistrationStatus(enum.IntEnum):
    SUCCESS = 0
    INVALID_ARGUMENT = 1
    ACCESS_DENIED = 2
    INSUFFICIENT_MEMORY = 3
    UNKNOWN_FAILURE = 4

class IsolatedWindowsEnvironmentPostMessageStatus(enum.IntEnum):
    SUCCESS = 0
    UNKNOWN_FAILURE = 1
    ENVIRONMENT_UNAVAILABLE = 2

class IsolatedWindowsEnvironmentProcessState(enum.IntEnum):
    RUNNING = 1
    ABORTED = 2
    COMPLETED = 3

class IsolatedWindowsEnvironmentProgressState(enum.IntEnum):
    QUEUED = 0
    PROCESSING = 1
    COMPLETED = 2
    CREATING = 3
    RETRYING = 4
    STARTING = 5
    FINALIZING = 6

class IsolatedWindowsEnvironmentShareFileStatus(enum.IntEnum):
    SUCCESS = 0
    UNKNOWN_FAILURE = 1
    ENVIRONMENT_UNAVAILABLE = 2
    ALREADY_SHARED_WITH_CONFLICTING_OPTIONS = 3
    FILE_NOT_FOUND = 4
    ACCESS_DENIED = 5

class IsolatedWindowsEnvironmentShareFolderStatus(enum.IntEnum):
    SUCCESS = 0
    UNKNOWN_FAILURE = 1
    ENVIRONMENT_UNAVAILABLE = 2
    FOLDER_NOT_FOUND = 3
    ACCESS_DENIED = 4

class IsolatedWindowsEnvironmentSignInProgress(enum.IntEnum):
    CONNECTING = 0
    CONNECTED = 1
    AUTHENTICATING = 2
    SETTING_UP_ACCOUNT = 3
    FINALIZING = 4
    COMPLETED = 5

class IsolatedWindowsEnvironmentStartProcessStatus(enum.IntEnum):
    SUCCESS = 0
    UNKNOWN_FAILURE = 1
    ENVIRONMENT_UNAVAILABLE = 2
    FILE_NOT_FOUND = 3
    APP_NOT_REGISTERED = 4

Self = typing.TypeVar('Self')

class IsolatedWindowsEnvironmentCreateProgress:
    state: IsolatedWindowsEnvironmentProgressState
    percent_complete: winsdk.system.UInt32
    def __new__(cls: typing.Type[IsolatedWindowsEnvironmentCreateProgress], state: IsolatedWindowsEnvironmentProgressState, percent_complete: winsdk.system.UInt32) -> IsolatedWindowsEnvironmentCreateProgress: ...

class IsolatedWindowsEnvironment(winsdk.system.Object):
    id: str
    @staticmethod
    def _from(obj: winsdk.system.Object) -> IsolatedWindowsEnvironment: ...
    def change_priority(self, priority: IsolatedWindowsEnvironmentCreationPriority) -> None: ...
    @typing.overload
    @staticmethod
    def create_async(options: typing.Optional[IsolatedWindowsEnvironmentOptions]) -> winsdk.windows.foundation.IAsyncOperationWithProgress[IsolatedWindowsEnvironmentCreateResult, IsolatedWindowsEnvironmentCreateProgress]: ...
    @typing.overload
    @staticmethod
    def create_async(options: typing.Optional[IsolatedWindowsEnvironmentOptions], telemetry_parameters: typing.Optional[IsolatedWindowsEnvironmentTelemetryParameters]) -> winsdk.windows.foundation.IAsyncOperationWithProgress[IsolatedWindowsEnvironmentCreateResult, IsolatedWindowsEnvironmentCreateProgress]: ...
    @staticmethod
    def find_by_owner_id(environment_owner_id: str) -> typing.Optional[winsdk.windows.foundation.collections.IVectorView[IsolatedWindowsEnvironment]]: ...
    @staticmethod
    def get_by_id(environment_id: str) -> typing.Optional[IsolatedWindowsEnvironment]: ...
    def get_user_info(self) -> typing.Optional[IsolatedWindowsEnvironmentUserInfo]: ...
    @typing.overload
    def launch_file_with_u_i_async(self, app_exe_path: str, arguments_template: str, file_path: str) -> winsdk.windows.foundation.IAsyncOperation[IsolatedWindowsEnvironmentLaunchFileResult]: ...
    @typing.overload
    def launch_file_with_u_i_async(self, app_exe_path: str, arguments_template: str, file_path: str, telemetry_parameters: typing.Optional[IsolatedWindowsEnvironmentTelemetryParameters]) -> winsdk.windows.foundation.IAsyncOperation[IsolatedWindowsEnvironmentLaunchFileResult]: ...
    @typing.overload
    def post_message_to_receiver_async(self, receiver_id: winsdk.system.Guid, message: typing.Iterable[winsdk.system.Object]) -> winsdk.windows.foundation.IAsyncOperation[IsolatedWindowsEnvironmentPostMessageResult]: ...
    @typing.overload
    def post_message_to_receiver_async(self, receiver_id: winsdk.system.Guid, message: typing.Iterable[winsdk.system.Object], telemetry_parameters: typing.Optional[IsolatedWindowsEnvironmentTelemetryParameters]) -> winsdk.windows.foundation.IAsyncOperation[IsolatedWindowsEnvironmentPostMessageResult]: ...
    def register_message_receiver(self, receiver_id: winsdk.system.Guid, message_received_callback: typing.Optional[MessageReceivedCallback]) -> None: ...
    @typing.overload
    def share_file_async(self, file_path: str, options: typing.Optional[IsolatedWindowsEnvironmentShareFileRequestOptions]) -> winsdk.windows.foundation.IAsyncOperation[IsolatedWindowsEnvironmentShareFileResult]: ...
    @typing.overload
    def share_file_async(self, file_path: str, options: typing.Optional[IsolatedWindowsEnvironmentShareFileRequestOptions], telemetry_parameters: typing.Optional[IsolatedWindowsEnvironmentTelemetryParameters]) -> winsdk.windows.foundation.IAsyncOperation[IsolatedWindowsEnvironmentShareFileResult]: ...
    @typing.overload
    def share_folder_async(self, host_folder: str, request_options: typing.Optional[IsolatedWindowsEnvironmentShareFolderRequestOptions]) -> winsdk.windows.foundation.IAsyncOperation[IsolatedWindowsEnvironmentShareFolderResult]: ...
    @typing.overload
    def share_folder_async(self, host_folder: str, request_options: typing.Optional[IsolatedWindowsEnvironmentShareFolderRequestOptions], telemetry_parameters: typing.Optional[IsolatedWindowsEnvironmentTelemetryParameters]) -> winsdk.windows.foundation.IAsyncOperation[IsolatedWindowsEnvironmentShareFolderResult]: ...
    @typing.overload
    def start_process_silently_async(self, host_exe_path: str, arguments: str, activator: IsolatedWindowsEnvironmentActivator) -> winsdk.windows.foundation.IAsyncOperation[IsolatedWindowsEnvironmentStartProcessResult]: ...
    @typing.overload
    def start_process_silently_async(self, host_exe_path: str, arguments: str, activator: IsolatedWindowsEnvironmentActivator, telemetry_parameters: typing.Optional[IsolatedWindowsEnvironmentTelemetryParameters]) -> winsdk.windows.foundation.IAsyncOperation[IsolatedWindowsEnvironmentStartProcessResult]: ...
    @typing.overload
    def terminate_async(self) -> winsdk.windows.foundation.IAsyncAction: ...
    @typing.overload
    def terminate_async(self, telemetry_parameters: typing.Optional[IsolatedWindowsEnvironmentTelemetryParameters]) -> winsdk.windows.foundation.IAsyncAction: ...
    def unregister_message_receiver(self, receiver_id: winsdk.system.Guid) -> None: ...

class IsolatedWindowsEnvironmentCreateResult(winsdk.system.Object):
    environment: typing.Optional[IsolatedWindowsEnvironment]
    extended_error: winsdk.windows.foundation.HResult
    status: IsolatedWindowsEnvironmentCreateStatus
    @staticmethod
    def _from(obj: winsdk.system.Object) -> IsolatedWindowsEnvironmentCreateResult: ...
    def change_creation_priority(self, priority: IsolatedWindowsEnvironmentCreationPriority) -> None: ...

class IsolatedWindowsEnvironmentFile(winsdk.system.Object):
    host_path: str
    id: winsdk.system.Guid
    guest_path: str
    is_read_only: winsdk.system.Boolean
    @staticmethod
    def _from(obj: winsdk.system.Object) -> IsolatedWindowsEnvironmentFile: ...
    def close(self) -> None: ...

class IsolatedWindowsEnvironmentHost(winsdk.system.Object):
    host_errors: typing.ClassVar[typing.Optional[winsdk.windows.foundation.collections.IVectorView[IsolatedWindowsEnvironmentHostError]]]
    is_ready: typing.ClassVar[winsdk.system.Boolean]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> IsolatedWindowsEnvironmentHost: ...

class IsolatedWindowsEnvironmentLaunchFileResult(winsdk.system.Object):
    extended_error: winsdk.windows.foundation.HResult
    file: typing.Optional[IsolatedWindowsEnvironmentFile]
    status: IsolatedWindowsEnvironmentLaunchFileStatus
    @staticmethod
    def _from(obj: winsdk.system.Object) -> IsolatedWindowsEnvironmentLaunchFileResult: ...

class IsolatedWindowsEnvironmentOptions(winsdk.system.Object):
    persist_user_profile: winsdk.system.Boolean
    environment_owner_id: str
    clipboard_copy_paste_directions: IsolatedWindowsEnvironmentClipboardCopyPasteDirections
    available_printers: IsolatedWindowsEnvironmentAvailablePrinters
    allowed_clipboard_formats: IsolatedWindowsEnvironmentAllowedClipboardFormats
    allow_graphics_hardware_acceleration: winsdk.system.Boolean
    allow_camera_and_microphone_access: winsdk.system.Boolean
    shared_folder_name_in_environment: str
    shared_host_folder_path: str
    window_annotation_override: str
    creation_priority: IsolatedWindowsEnvironmentCreationPriority
    allowed_clipboard_formats_to_host: IsolatedWindowsEnvironmentAllowedClipboardFormats
    allowed_clipboard_formats_to_environment: IsolatedWindowsEnvironmentAllowedClipboardFormats
    @staticmethod
    def _from(obj: winsdk.system.Object) -> IsolatedWindowsEnvironmentOptions: ...
    def __new__(cls: typing.Type[IsolatedWindowsEnvironmentOptions]) -> IsolatedWindowsEnvironmentOptions:...
    def share_host_folder_for_untrusted_items(self, shared_host_folder_path: str, share_folder_name_in_environment: str) -> None: ...

class IsolatedWindowsEnvironmentOwnerRegistration(winsdk.system.Object):
    @staticmethod
    def _from(obj: winsdk.system.Object) -> IsolatedWindowsEnvironmentOwnerRegistration: ...
    @staticmethod
    def register(owner_name: str, owner_registration_data: typing.Optional[IsolatedWindowsEnvironmentOwnerRegistrationData]) -> typing.Optional[IsolatedWindowsEnvironmentOwnerRegistrationResult]: ...
    @staticmethod
    def unregister(owner_name: str) -> None: ...

class IsolatedWindowsEnvironmentOwnerRegistrationData(winsdk.system.Object):
    activation_file_extensions: typing.Optional[winsdk.windows.foundation.collections.IVector[str]]
    processes_runnable_as_system: typing.Optional[winsdk.windows.foundation.collections.IVector[str]]
    processes_runnable_as_user: typing.Optional[winsdk.windows.foundation.collections.IVector[str]]
    shareable_folders: typing.Optional[winsdk.windows.foundation.collections.IVector[str]]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> IsolatedWindowsEnvironmentOwnerRegistrationData: ...
    def __new__(cls: typing.Type[IsolatedWindowsEnvironmentOwnerRegistrationData]) -> IsolatedWindowsEnvironmentOwnerRegistrationData:...

class IsolatedWindowsEnvironmentOwnerRegistrationResult(winsdk.system.Object):
    extended_error: winsdk.windows.foundation.HResult
    status: IsolatedWindowsEnvironmentOwnerRegistrationStatus
    @staticmethod
    def _from(obj: winsdk.system.Object) -> IsolatedWindowsEnvironmentOwnerRegistrationResult: ...

class IsolatedWindowsEnvironmentPostMessageResult(winsdk.system.Object):
    extended_error: winsdk.windows.foundation.HResult
    status: IsolatedWindowsEnvironmentPostMessageStatus
    @staticmethod
    def _from(obj: winsdk.system.Object) -> IsolatedWindowsEnvironmentPostMessageResult: ...

class IsolatedWindowsEnvironmentProcess(winsdk.system.Object):
    exit_code: winsdk.system.UInt32
    state: IsolatedWindowsEnvironmentProcessState
    @staticmethod
    def _from(obj: winsdk.system.Object) -> IsolatedWindowsEnvironmentProcess: ...
    def wait_for_exit(self) -> None: ...
    def wait_for_exit_async(self) -> winsdk.windows.foundation.IAsyncAction: ...
    def wait_for_exit_with_timeout(self, timeout_milliseconds: winsdk.system.UInt32) -> None: ...

class IsolatedWindowsEnvironmentShareFileRequestOptions(winsdk.system.Object):
    allow_write: winsdk.system.Boolean
    @staticmethod
    def _from(obj: winsdk.system.Object) -> IsolatedWindowsEnvironmentShareFileRequestOptions: ...
    def __new__(cls: typing.Type[IsolatedWindowsEnvironmentShareFileRequestOptions]) -> IsolatedWindowsEnvironmentShareFileRequestOptions:...

class IsolatedWindowsEnvironmentShareFileResult(winsdk.system.Object):
    extended_error: winsdk.windows.foundation.HResult
    file: typing.Optional[IsolatedWindowsEnvironmentFile]
    status: IsolatedWindowsEnvironmentShareFileStatus
    @staticmethod
    def _from(obj: winsdk.system.Object) -> IsolatedWindowsEnvironmentShareFileResult: ...

class IsolatedWindowsEnvironmentShareFolderRequestOptions(winsdk.system.Object):
    allow_write: winsdk.system.Boolean
    @staticmethod
    def _from(obj: winsdk.system.Object) -> IsolatedWindowsEnvironmentShareFolderRequestOptions: ...
    def __new__(cls: typing.Type[IsolatedWindowsEnvironmentShareFolderRequestOptions]) -> IsolatedWindowsEnvironmentShareFolderRequestOptions:...

class IsolatedWindowsEnvironmentShareFolderResult(winsdk.system.Object):
    extended_error: winsdk.windows.foundation.HResult
    status: IsolatedWindowsEnvironmentShareFolderStatus
    @staticmethod
    def _from(obj: winsdk.system.Object) -> IsolatedWindowsEnvironmentShareFolderResult: ...

class IsolatedWindowsEnvironmentStartProcessResult(winsdk.system.Object):
    extended_error: winsdk.windows.foundation.HResult
    process: typing.Optional[IsolatedWindowsEnvironmentProcess]
    status: IsolatedWindowsEnvironmentStartProcessStatus
    @staticmethod
    def _from(obj: winsdk.system.Object) -> IsolatedWindowsEnvironmentStartProcessResult: ...

class IsolatedWindowsEnvironmentTelemetryParameters(winsdk.system.Object):
    correlation_id: winsdk.system.Guid
    @staticmethod
    def _from(obj: winsdk.system.Object) -> IsolatedWindowsEnvironmentTelemetryParameters: ...
    def __new__(cls: typing.Type[IsolatedWindowsEnvironmentTelemetryParameters]) -> IsolatedWindowsEnvironmentTelemetryParameters:...

class IsolatedWindowsEnvironmentUserInfo(winsdk.system.Object):
    environment_user_name: str
    environment_user_sid: str
    @staticmethod
    def _from(obj: winsdk.system.Object) -> IsolatedWindowsEnvironmentUserInfo: ...
    def try_wait_for_sign_in_async(self) -> winsdk.windows.foundation.IAsyncOperation[winsdk.system.Boolean]: ...
    def try_wait_for_sign_in_with_progress_async(self) -> winsdk.windows.foundation.IAsyncOperationWithProgress[winsdk.system.Boolean, IsolatedWindowsEnvironmentSignInProgress]: ...

class IsolatedWindowsHostMessenger(winsdk.system.Object):
    @staticmethod
    def _from(obj: winsdk.system.Object) -> IsolatedWindowsHostMessenger: ...
    @staticmethod
    def get_file_id(file_path: str) -> winsdk.system.Guid: ...
    @staticmethod
    def post_message_to_receiver(receiver_id: winsdk.system.Guid, message: winsdk.windows.foundation.collections.IVectorView[winsdk.system.Object]) -> None: ...
    @staticmethod
    def register_host_message_receiver(receiver_id: winsdk.system.Guid, host_message_received_callback: typing.Optional[HostMessageReceivedCallback]) -> None: ...
    @staticmethod
    def unregister_host_message_receiver(receiver_id: winsdk.system.Guid) -> None: ...

HostMessageReceivedCallback = typing.Callable[[winsdk.system.Guid, winsdk.windows.foundation.collections.IVectorView[winsdk.system.Object]], None]

MessageReceivedCallback = typing.Callable[[winsdk.system.Guid, winsdk.windows.foundation.collections.IVectorView[winsdk.system.Object]], None]

