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

import enum
import sys
import types
import typing
import uuid

import winsdk._winrt as _winrt

try:
    import winsdk.windows.data.json
except Exception:
    pass

try:
    import winsdk.windows.foundation
except Exception:
    pass

try:
    import winsdk.windows.foundation.collections
except Exception:
    pass

try:
    import winsdk.windows.system
except Exception:
    pass

class DiagnosticActionState(enum.IntEnum):
    INITIALIZING = 0
    DOWNLOADING = 1
    VERIFYING_TRUST = 2
    DETECTING = 3
    RESOLVING = 4
    VERIFYING_RESOLUTION = 5
    EXECUTING = 6

class DiagnosticActionResult(_winrt.Object):
    extended_error: winsdk.windows.foundation.HResult
    results: winsdk.windows.foundation.collections.ValueSet
    @staticmethod
    def _from(obj: _winrt.Object) -> DiagnosticActionResult: ...

class DiagnosticInvoker(_winrt.Object):
    is_supported: _winrt.Boolean
    @staticmethod
    def _from(obj: _winrt.Object) -> DiagnosticInvoker: ...
    @typing.overload
    @staticmethod
    def get_default() -> DiagnosticInvoker: ...
    @typing.overload
    @staticmethod
    def get_for_user(user: winsdk.windows.system.User) -> DiagnosticInvoker: ...
    @typing.overload
    def run_diagnostic_action_async(self, context: winsdk.windows.data.json.JsonObject) -> winsdk.windows.foundation.IAsyncOperationWithProgress[DiagnosticActionResult, DiagnosticActionState]: ...
    @typing.overload
    def run_diagnostic_action_from_string_async(self, context: str) -> winsdk.windows.foundation.IAsyncOperationWithProgress[DiagnosticActionResult, DiagnosticActionState]: ...

class ProcessCpuUsage(_winrt.Object):
    @staticmethod
    def _from(obj: _winrt.Object) -> ProcessCpuUsage: ...
    @typing.overload
    def get_report(self) -> ProcessCpuUsageReport: ...

class ProcessCpuUsageReport(_winrt.Object):
    kernel_time: winsdk.windows.foundation.TimeSpan
    user_time: winsdk.windows.foundation.TimeSpan
    @staticmethod
    def _from(obj: _winrt.Object) -> ProcessCpuUsageReport: ...

class ProcessDiagnosticInfo(_winrt.Object):
    cpu_usage: ProcessCpuUsage
    disk_usage: ProcessDiskUsage
    executable_file_name: str
    memory_usage: ProcessMemoryUsage
    parent: ProcessDiagnosticInfo
    process_id: _winrt.UInt32
    process_start_time: winsdk.windows.foundation.DateTime
    is_packaged: _winrt.Boolean
    @staticmethod
    def _from(obj: _winrt.Object) -> ProcessDiagnosticInfo: ...
    @typing.overload
    def get_app_diagnostic_infos(self) -> winsdk.windows.foundation.collections.IVector[winsdk.windows.system.AppDiagnosticInfo]: ...
    @typing.overload
    @staticmethod
    def get_for_current_process() -> ProcessDiagnosticInfo: ...
    @typing.overload
    @staticmethod
    def get_for_processes() -> winsdk.windows.foundation.collections.IVectorView[ProcessDiagnosticInfo]: ...
    @typing.overload
    @staticmethod
    def try_get_for_process_id(process_id: _winrt.UInt32) -> ProcessDiagnosticInfo: ...

class ProcessDiskUsage(_winrt.Object):
    @staticmethod
    def _from(obj: _winrt.Object) -> ProcessDiskUsage: ...
    @typing.overload
    def get_report(self) -> ProcessDiskUsageReport: ...

class ProcessDiskUsageReport(_winrt.Object):
    bytes_read_count: _winrt.Int64
    bytes_written_count: _winrt.Int64
    other_bytes_count: _winrt.Int64
    other_operation_count: _winrt.Int64
    read_operation_count: _winrt.Int64
    write_operation_count: _winrt.Int64
    @staticmethod
    def _from(obj: _winrt.Object) -> ProcessDiskUsageReport: ...

class ProcessMemoryUsage(_winrt.Object):
    @staticmethod
    def _from(obj: _winrt.Object) -> ProcessMemoryUsage: ...
    @typing.overload
    def get_report(self) -> ProcessMemoryUsageReport: ...

class ProcessMemoryUsageReport(_winrt.Object):
    non_paged_pool_size_in_bytes: _winrt.UInt64
    page_fault_count: _winrt.UInt32
    page_file_size_in_bytes: _winrt.UInt64
    paged_pool_size_in_bytes: _winrt.UInt64
    peak_non_paged_pool_size_in_bytes: _winrt.UInt64
    peak_page_file_size_in_bytes: _winrt.UInt64
    peak_paged_pool_size_in_bytes: _winrt.UInt64
    peak_virtual_memory_size_in_bytes: _winrt.UInt64
    peak_working_set_size_in_bytes: _winrt.UInt64
    private_page_count: _winrt.UInt64
    virtual_memory_size_in_bytes: _winrt.UInt64
    working_set_size_in_bytes: _winrt.UInt64
    @staticmethod
    def _from(obj: _winrt.Object) -> ProcessMemoryUsageReport: ...

class SystemCpuUsage(_winrt.Object):
    @staticmethod
    def _from(obj: _winrt.Object) -> SystemCpuUsage: ...
    @typing.overload
    def get_report(self) -> SystemCpuUsageReport: ...

class SystemCpuUsageReport(_winrt.Object):
    idle_time: winsdk.windows.foundation.TimeSpan
    kernel_time: winsdk.windows.foundation.TimeSpan
    user_time: winsdk.windows.foundation.TimeSpan
    @staticmethod
    def _from(obj: _winrt.Object) -> SystemCpuUsageReport: ...

class SystemDiagnosticInfo(_winrt.Object):
    cpu_usage: SystemCpuUsage
    memory_usage: SystemMemoryUsage
    preferred_architecture: winsdk.windows.system.ProcessorArchitecture
    @staticmethod
    def _from(obj: _winrt.Object) -> SystemDiagnosticInfo: ...
    @typing.overload
    @staticmethod
    def get_for_current_system() -> SystemDiagnosticInfo: ...
    @typing.overload
    @staticmethod
    def is_architecture_supported(type: winsdk.windows.system.ProcessorArchitecture) -> _winrt.Boolean: ...

class SystemMemoryUsage(_winrt.Object):
    @staticmethod
    def _from(obj: _winrt.Object) -> SystemMemoryUsage: ...
    @typing.overload
    def get_report(self) -> SystemMemoryUsageReport: ...

class SystemMemoryUsageReport(_winrt.Object):
    available_size_in_bytes: _winrt.UInt64
    committed_size_in_bytes: _winrt.UInt64
    total_physical_size_in_bytes: _winrt.UInt64
    @staticmethod
    def _from(obj: _winrt.Object) -> SystemMemoryUsageReport: ...

