"""
This file is generated by generator/run.py based on the Chrome DevTools Protocol.

The SystemInfo domain defines methods and events for querying low-level system information.
https://chromedevtools.github.io/devtools-protocol/tot/SystemInfo/

***************************************************
                    Methods
***************************************************
"""
from __future__ import annotations

from cdpkit.protocol._types import (
    SystemInfo,
)
from cdpkit.protocol.base import CDPMethod, InputModel, OutputModel


class GetInfoOutput(OutputModel):

    gpu: SystemInfo.GPUInfo
    modelName: str
    modelVersion: str
    commandLine: str


class GetInfo(CDPMethod[GetInfoOutput]):
    """ Returns information about the system. """

    INPUT_VALIDATOR = None
    OUTPUT_VALIDATOR = GetInfoOutput


class GetFeatureStateInput(InputModel):

    featureState: str


class GetFeatureStateOutput(OutputModel):

    featureEnabled: bool


class GetFeatureState(CDPMethod[GetFeatureStateOutput]):
    """ Returns information about the feature state. """

    INPUT_VALIDATOR = GetFeatureStateInput
    OUTPUT_VALIDATOR = GetFeatureStateOutput

    def __init__(
        self,
        *,
        feature_state: str
    ):
        super().__init__(
            featureState=feature_state
        )


class GetProcessInfoOutput(OutputModel):

    processInfo: list[SystemInfo.ProcessInfo]


class GetProcessInfo(CDPMethod[GetProcessInfoOutput]):
    """ Returns information about all running processes. """

    INPUT_VALIDATOR = None
    OUTPUT_VALIDATOR = GetProcessInfoOutput
