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

import enum
import datetime
import sys
import types
import typing

import winsdk._winrt as _winrt
import winsdk.windows.foundation.collections

class PlatformDiagnosticActionState(enum.IntEnum):
    SUCCESS = 0
    FREE_NETWORK_NOT_AVAILABLE = 1
    A_C_POWER_NOT_AVAILABLE = 2

class PlatformDiagnosticEscalationType(enum.IntEnum):
    ON_COMPLETION = 0
    ON_FAILURE = 1

class PlatformDiagnosticEventBufferLatencies(enum.IntFlag):
    NORMAL = 0x1
    COST_DEFERRED = 0x2
    REALTIME = 0x4

class PlatformDiagnosticTracePriority(enum.IntEnum):
    NORMAL = 0
    USER_ELEVATED = 1

class PlatformDiagnosticTraceSlotState(enum.IntEnum):
    NOT_RUNNING = 0
    RUNNING = 1
    THROTTLED = 2

class PlatformDiagnosticTraceSlotType(enum.IntEnum):
    ALTERNATIVE = 0
    ALWAYS_ON = 1
    MINI = 2

Self = typing.TypeVar('Self')

class PlatformDiagnosticActions(_winrt.Object):
    @staticmethod
    def _from(obj: _winrt.Object) -> PlatformDiagnosticActions: ...
    @staticmethod
    def download_latest_settings_for_namespace(partner: str, feature: str, is_scenario_namespace: _winrt.Boolean, download_over_costed_network: _winrt.Boolean, download_over_battery: _winrt.Boolean) -> PlatformDiagnosticActionState: ...
    @staticmethod
    def force_upload(latency: PlatformDiagnosticEventBufferLatencies, upload_over_costed_network: _winrt.Boolean, upload_over_battery: _winrt.Boolean) -> PlatformDiagnosticActionState: ...
    @staticmethod
    def get_active_scenario_list() -> typing.Optional[winsdk.windows.foundation.collections.IVectorView[_winrt.Guid]]: ...
    @staticmethod
    def get_active_trace_runtime(slot_type: PlatformDiagnosticTraceSlotType) -> typing.Optional[PlatformDiagnosticTraceRuntimeInfo]: ...
    @staticmethod
    def get_known_trace_list(slot_type: PlatformDiagnosticTraceSlotType) -> typing.Optional[winsdk.windows.foundation.collections.IVectorView[PlatformDiagnosticTraceInfo]]: ...
    @staticmethod
    def is_scenario_enabled(scenario_id: _winrt.Guid) -> _winrt.Boolean: ...
    @staticmethod
    def is_trace_running(slot_type: PlatformDiagnosticTraceSlotType, scenario_id: _winrt.Guid, trace_profile_hash: _winrt.UInt64) -> PlatformDiagnosticTraceSlotState: ...
    @staticmethod
    def try_escalate_scenario(scenario_id: _winrt.Guid, escalation_type: PlatformDiagnosticEscalationType, output_directory: str, timestamp_output_directory: _winrt.Boolean, force_escalation_upload: _winrt.Boolean, triggers: winsdk.windows.foundation.collections.IMapView[str, str]) -> _winrt.Boolean: ...

class PlatformDiagnosticTraceInfo(_winrt.Object):
    is_auto_logger: _winrt.Boolean
    is_exclusive: _winrt.Boolean
    max_trace_duration_file_time: _winrt.Int64
    priority: PlatformDiagnosticTracePriority
    profile_hash: _winrt.UInt64
    scenario_id: _winrt.Guid
    @staticmethod
    def _from(obj: _winrt.Object) -> PlatformDiagnosticTraceInfo: ...

class PlatformDiagnosticTraceRuntimeInfo(_winrt.Object):
    etw_runtime_file_time: _winrt.Int64
    runtime_file_time: _winrt.Int64
    @staticmethod
    def _from(obj: _winrt.Object) -> PlatformDiagnosticTraceRuntimeInfo: ...

