"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""

import builtins
import google.protobuf.descriptor
import google.protobuf.internal.enum_type_wrapper
import google.protobuf.message
import sys
import typing

if sys.version_info >= (3, 10):
    import typing as typing_extensions
else:
    import typing_extensions

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

class _TelemetrySensorType:
    ValueType = typing.NewType("ValueType", builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _TelemetrySensorTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_TelemetrySensorType.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    SENSOR_UNSET: _TelemetrySensorType.ValueType  # 0
    """
    No external telemetry sensor explicitly set
    """
    BME280: _TelemetrySensorType.ValueType  # 1
    """
    High accuracy temperature, pressure, humidity
    """
    BME680: _TelemetrySensorType.ValueType  # 2
    """
    High accuracy temperature, pressure, humidity, and air resistance
    """
    MCP9808: _TelemetrySensorType.ValueType  # 3
    """
    Very high accuracy temperature
    """
    INA260: _TelemetrySensorType.ValueType  # 4
    """
    Moderate accuracy current and voltage
    """
    INA219: _TelemetrySensorType.ValueType  # 5
    """
    Moderate accuracy current and voltage
    """
    BMP280: _TelemetrySensorType.ValueType  # 6
    """
    High accuracy temperature and pressure
    """
    SHTC3: _TelemetrySensorType.ValueType  # 7
    """
    High accuracy temperature and humidity
    """
    LPS22: _TelemetrySensorType.ValueType  # 8
    """
    High accuracy pressure
    """
    QMC6310: _TelemetrySensorType.ValueType  # 9
    """
    3-Axis magnetic sensor
    """
    QMI8658: _TelemetrySensorType.ValueType  # 10
    """
    6-Axis inertial measurement sensor
    """
    QMC5883L: _TelemetrySensorType.ValueType  # 11
    """
    3-Axis magnetic sensor
    """
    SHT31: _TelemetrySensorType.ValueType  # 12
    """
    High accuracy temperature and humidity
    """
    PMSA003I: _TelemetrySensorType.ValueType  # 13
    """
    PM2.5 air quality sensor
    """
    INA3221: _TelemetrySensorType.ValueType  # 14
    """
    INA3221 3 Channel Voltage / Current Sensor
    """
    BMP085: _TelemetrySensorType.ValueType  # 15
    """
    BMP085/BMP180 High accuracy temperature and pressure (older Version of BMP280)
    """
    RCWL9620: _TelemetrySensorType.ValueType  # 16
    """
    RCWL-9620 Doppler Radar Distance Sensor, used for water level detection
    """
    SHT4X: _TelemetrySensorType.ValueType  # 17
    """
    Sensirion High accuracy temperature and humidity
    """
    VEML7700: _TelemetrySensorType.ValueType  # 18
    """
    VEML7700 high accuracy ambient light(Lux) digital 16-bit resolution sensor.
    """
    MLX90632: _TelemetrySensorType.ValueType  # 19
    """
    MLX90632 non-contact IR temperature sensor.
    """
    OPT3001: _TelemetrySensorType.ValueType  # 20
    """
    TI OPT3001 Ambient Light Sensor
    """
    LTR390UV: _TelemetrySensorType.ValueType  # 21
    """
    Lite On LTR-390UV-01 UV Light Sensor
    """
    TSL25911FN: _TelemetrySensorType.ValueType  # 22
    """
    AMS TSL25911FN RGB Light Sensor
    """
    AHT10: _TelemetrySensorType.ValueType  # 23
    """
    AHT10 Integrated temperature and humidity sensor
    """
    DFROBOT_LARK: _TelemetrySensorType.ValueType  # 24
    """
    DFRobot Lark Weather station (temperature, humidity, pressure, wind speed and direction)
    """
    NAU7802: _TelemetrySensorType.ValueType  # 25
    """
    NAU7802 Scale Chip or compatible
    """
    BMP3XX: _TelemetrySensorType.ValueType  # 26
    """
    BMP3XX High accuracy temperature and pressure
    """
    ICM20948: _TelemetrySensorType.ValueType  # 27
    """
    ICM-20948 9-Axis digital motion processor
    """
    MAX17048: _TelemetrySensorType.ValueType  # 28
    """
    MAX17048 1S lipo battery sensor (voltage, state of charge, time to go)
    """

class TelemetrySensorType(_TelemetrySensorType, metaclass=_TelemetrySensorTypeEnumTypeWrapper):
    """
    Supported I2C Sensors for telemetry in Meshtastic
    """

SENSOR_UNSET: TelemetrySensorType.ValueType  # 0
"""
No external telemetry sensor explicitly set
"""
BME280: TelemetrySensorType.ValueType  # 1
"""
High accuracy temperature, pressure, humidity
"""
BME680: TelemetrySensorType.ValueType  # 2
"""
High accuracy temperature, pressure, humidity, and air resistance
"""
MCP9808: TelemetrySensorType.ValueType  # 3
"""
Very high accuracy temperature
"""
INA260: TelemetrySensorType.ValueType  # 4
"""
Moderate accuracy current and voltage
"""
INA219: TelemetrySensorType.ValueType  # 5
"""
Moderate accuracy current and voltage
"""
BMP280: TelemetrySensorType.ValueType  # 6
"""
High accuracy temperature and pressure
"""
SHTC3: TelemetrySensorType.ValueType  # 7
"""
High accuracy temperature and humidity
"""
LPS22: TelemetrySensorType.ValueType  # 8
"""
High accuracy pressure
"""
QMC6310: TelemetrySensorType.ValueType  # 9
"""
3-Axis magnetic sensor
"""
QMI8658: TelemetrySensorType.ValueType  # 10
"""
6-Axis inertial measurement sensor
"""
QMC5883L: TelemetrySensorType.ValueType  # 11
"""
3-Axis magnetic sensor
"""
SHT31: TelemetrySensorType.ValueType  # 12
"""
High accuracy temperature and humidity
"""
PMSA003I: TelemetrySensorType.ValueType  # 13
"""
PM2.5 air quality sensor
"""
INA3221: TelemetrySensorType.ValueType  # 14
"""
INA3221 3 Channel Voltage / Current Sensor
"""
BMP085: TelemetrySensorType.ValueType  # 15
"""
BMP085/BMP180 High accuracy temperature and pressure (older Version of BMP280)
"""
RCWL9620: TelemetrySensorType.ValueType  # 16
"""
RCWL-9620 Doppler Radar Distance Sensor, used for water level detection
"""
SHT4X: TelemetrySensorType.ValueType  # 17
"""
Sensirion High accuracy temperature and humidity
"""
VEML7700: TelemetrySensorType.ValueType  # 18
"""
VEML7700 high accuracy ambient light(Lux) digital 16-bit resolution sensor.
"""
MLX90632: TelemetrySensorType.ValueType  # 19
"""
MLX90632 non-contact IR temperature sensor.
"""
OPT3001: TelemetrySensorType.ValueType  # 20
"""
TI OPT3001 Ambient Light Sensor
"""
LTR390UV: TelemetrySensorType.ValueType  # 21
"""
Lite On LTR-390UV-01 UV Light Sensor
"""
TSL25911FN: TelemetrySensorType.ValueType  # 22
"""
AMS TSL25911FN RGB Light Sensor
"""
AHT10: TelemetrySensorType.ValueType  # 23
"""
AHT10 Integrated temperature and humidity sensor
"""
DFROBOT_LARK: TelemetrySensorType.ValueType  # 24
"""
DFRobot Lark Weather station (temperature, humidity, pressure, wind speed and direction)
"""
NAU7802: TelemetrySensorType.ValueType  # 25
"""
NAU7802 Scale Chip or compatible
"""
BMP3XX: TelemetrySensorType.ValueType  # 26
"""
BMP3XX High accuracy temperature and pressure
"""
ICM20948: TelemetrySensorType.ValueType  # 27
"""
ICM-20948 9-Axis digital motion processor
"""
MAX17048: TelemetrySensorType.ValueType  # 28
"""
MAX17048 1S lipo battery sensor (voltage, state of charge, time to go)
"""
global___TelemetrySensorType = TelemetrySensorType

@typing.final
class DeviceMetrics(google.protobuf.message.Message):
    """
    Key native device metrics such as battery level
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    BATTERY_LEVEL_FIELD_NUMBER: builtins.int
    VOLTAGE_FIELD_NUMBER: builtins.int
    CHANNEL_UTILIZATION_FIELD_NUMBER: builtins.int
    AIR_UTIL_TX_FIELD_NUMBER: builtins.int
    UPTIME_SECONDS_FIELD_NUMBER: builtins.int
    battery_level: builtins.int
    """
    0-100 (>100 means powered)
    """
    voltage: builtins.float
    """
    Voltage measured
    """
    channel_utilization: builtins.float
    """
    Utilization for the current channel, including well formed TX, RX and malformed RX (aka noise).
    """
    air_util_tx: builtins.float
    """
    Percent of airtime for transmission used within the last hour.
    """
    uptime_seconds: builtins.int
    """
    How long the device has been running since the last reboot (in seconds)
    """
    def __init__(
        self,
        *,
        battery_level: builtins.int | None = ...,
        voltage: builtins.float | None = ...,
        channel_utilization: builtins.float | None = ...,
        air_util_tx: builtins.float | None = ...,
        uptime_seconds: builtins.int | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["_air_util_tx", b"_air_util_tx", "_battery_level", b"_battery_level", "_channel_utilization", b"_channel_utilization", "_uptime_seconds", b"_uptime_seconds", "_voltage", b"_voltage", "air_util_tx", b"air_util_tx", "battery_level", b"battery_level", "channel_utilization", b"channel_utilization", "uptime_seconds", b"uptime_seconds", "voltage", b"voltage"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["_air_util_tx", b"_air_util_tx", "_battery_level", b"_battery_level", "_channel_utilization", b"_channel_utilization", "_uptime_seconds", b"_uptime_seconds", "_voltage", b"_voltage", "air_util_tx", b"air_util_tx", "battery_level", b"battery_level", "channel_utilization", b"channel_utilization", "uptime_seconds", b"uptime_seconds", "voltage", b"voltage"]) -> None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_air_util_tx", b"_air_util_tx"]) -> typing.Literal["air_util_tx"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_battery_level", b"_battery_level"]) -> typing.Literal["battery_level"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_channel_utilization", b"_channel_utilization"]) -> typing.Literal["channel_utilization"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_uptime_seconds", b"_uptime_seconds"]) -> typing.Literal["uptime_seconds"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_voltage", b"_voltage"]) -> typing.Literal["voltage"] | None: ...

global___DeviceMetrics = DeviceMetrics

@typing.final
class EnvironmentMetrics(google.protobuf.message.Message):
    """
    Weather station or other environmental metrics
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    TEMPERATURE_FIELD_NUMBER: builtins.int
    RELATIVE_HUMIDITY_FIELD_NUMBER: builtins.int
    BAROMETRIC_PRESSURE_FIELD_NUMBER: builtins.int
    GAS_RESISTANCE_FIELD_NUMBER: builtins.int
    VOLTAGE_FIELD_NUMBER: builtins.int
    CURRENT_FIELD_NUMBER: builtins.int
    IAQ_FIELD_NUMBER: builtins.int
    DISTANCE_FIELD_NUMBER: builtins.int
    LUX_FIELD_NUMBER: builtins.int
    WHITE_LUX_FIELD_NUMBER: builtins.int
    IR_LUX_FIELD_NUMBER: builtins.int
    UV_LUX_FIELD_NUMBER: builtins.int
    WIND_DIRECTION_FIELD_NUMBER: builtins.int
    WIND_SPEED_FIELD_NUMBER: builtins.int
    WEIGHT_FIELD_NUMBER: builtins.int
    WIND_GUST_FIELD_NUMBER: builtins.int
    WIND_LULL_FIELD_NUMBER: builtins.int
    temperature: builtins.float
    """
    Temperature measured
    """
    relative_humidity: builtins.float
    """
    Relative humidity percent measured
    """
    barometric_pressure: builtins.float
    """
    Barometric pressure in hPA measured
    """
    gas_resistance: builtins.float
    """
    Gas resistance in MOhm measured
    """
    voltage: builtins.float
    """
    Voltage measured (To be depreciated in favor of PowerMetrics in Meshtastic 3.x)
    """
    current: builtins.float
    """
    Current measured (To be depreciated in favor of PowerMetrics in Meshtastic 3.x)
    """
    iaq: builtins.int
    """
    relative scale IAQ value as measured by Bosch BME680 . value 0-500.
    Belongs to Air Quality but is not particle but VOC measurement. Other VOC values can also be put in here.
    """
    distance: builtins.float
    """
    RCWL9620 Doppler Radar Distance Sensor, used for water level detection. Float value in mm.
    """
    lux: builtins.float
    """
    VEML7700 high accuracy ambient light(Lux) digital 16-bit resolution sensor.
    """
    white_lux: builtins.float
    """
    VEML7700 high accuracy white light(irradiance) not calibrated digital 16-bit resolution sensor.
    """
    ir_lux: builtins.float
    """
    Infrared lux
    """
    uv_lux: builtins.float
    """
    Ultraviolet lux
    """
    wind_direction: builtins.int
    """
    Wind direction in degrees
    0 degrees = North, 90 = East, etc...
    """
    wind_speed: builtins.float
    """
    Wind speed in m/s
    """
    weight: builtins.float
    """
    Weight in KG
    """
    wind_gust: builtins.float
    """
    Wind gust in m/s
    """
    wind_lull: builtins.float
    """
    Wind lull in m/s
    """
    def __init__(
        self,
        *,
        temperature: builtins.float | None = ...,
        relative_humidity: builtins.float | None = ...,
        barometric_pressure: builtins.float | None = ...,
        gas_resistance: builtins.float | None = ...,
        voltage: builtins.float | None = ...,
        current: builtins.float | None = ...,
        iaq: builtins.int | None = ...,
        distance: builtins.float | None = ...,
        lux: builtins.float | None = ...,
        white_lux: builtins.float | None = ...,
        ir_lux: builtins.float | None = ...,
        uv_lux: builtins.float | None = ...,
        wind_direction: builtins.int | None = ...,
        wind_speed: builtins.float | None = ...,
        weight: builtins.float | None = ...,
        wind_gust: builtins.float | None = ...,
        wind_lull: builtins.float | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["_barometric_pressure", b"_barometric_pressure", "_current", b"_current", "_distance", b"_distance", "_gas_resistance", b"_gas_resistance", "_iaq", b"_iaq", "_ir_lux", b"_ir_lux", "_lux", b"_lux", "_relative_humidity", b"_relative_humidity", "_temperature", b"_temperature", "_uv_lux", b"_uv_lux", "_voltage", b"_voltage", "_weight", b"_weight", "_white_lux", b"_white_lux", "_wind_direction", b"_wind_direction", "_wind_gust", b"_wind_gust", "_wind_lull", b"_wind_lull", "_wind_speed", b"_wind_speed", "barometric_pressure", b"barometric_pressure", "current", b"current", "distance", b"distance", "gas_resistance", b"gas_resistance", "iaq", b"iaq", "ir_lux", b"ir_lux", "lux", b"lux", "relative_humidity", b"relative_humidity", "temperature", b"temperature", "uv_lux", b"uv_lux", "voltage", b"voltage", "weight", b"weight", "white_lux", b"white_lux", "wind_direction", b"wind_direction", "wind_gust", b"wind_gust", "wind_lull", b"wind_lull", "wind_speed", b"wind_speed"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["_barometric_pressure", b"_barometric_pressure", "_current", b"_current", "_distance", b"_distance", "_gas_resistance", b"_gas_resistance", "_iaq", b"_iaq", "_ir_lux", b"_ir_lux", "_lux", b"_lux", "_relative_humidity", b"_relative_humidity", "_temperature", b"_temperature", "_uv_lux", b"_uv_lux", "_voltage", b"_voltage", "_weight", b"_weight", "_white_lux", b"_white_lux", "_wind_direction", b"_wind_direction", "_wind_gust", b"_wind_gust", "_wind_lull", b"_wind_lull", "_wind_speed", b"_wind_speed", "barometric_pressure", b"barometric_pressure", "current", b"current", "distance", b"distance", "gas_resistance", b"gas_resistance", "iaq", b"iaq", "ir_lux", b"ir_lux", "lux", b"lux", "relative_humidity", b"relative_humidity", "temperature", b"temperature", "uv_lux", b"uv_lux", "voltage", b"voltage", "weight", b"weight", "white_lux", b"white_lux", "wind_direction", b"wind_direction", "wind_gust", b"wind_gust", "wind_lull", b"wind_lull", "wind_speed", b"wind_speed"]) -> None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_barometric_pressure", b"_barometric_pressure"]) -> typing.Literal["barometric_pressure"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_current", b"_current"]) -> typing.Literal["current"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_distance", b"_distance"]) -> typing.Literal["distance"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_gas_resistance", b"_gas_resistance"]) -> typing.Literal["gas_resistance"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_iaq", b"_iaq"]) -> typing.Literal["iaq"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_ir_lux", b"_ir_lux"]) -> typing.Literal["ir_lux"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_lux", b"_lux"]) -> typing.Literal["lux"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_relative_humidity", b"_relative_humidity"]) -> typing.Literal["relative_humidity"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_temperature", b"_temperature"]) -> typing.Literal["temperature"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_uv_lux", b"_uv_lux"]) -> typing.Literal["uv_lux"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_voltage", b"_voltage"]) -> typing.Literal["voltage"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_weight", b"_weight"]) -> typing.Literal["weight"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_white_lux", b"_white_lux"]) -> typing.Literal["white_lux"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_wind_direction", b"_wind_direction"]) -> typing.Literal["wind_direction"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_wind_gust", b"_wind_gust"]) -> typing.Literal["wind_gust"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_wind_lull", b"_wind_lull"]) -> typing.Literal["wind_lull"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_wind_speed", b"_wind_speed"]) -> typing.Literal["wind_speed"] | None: ...

global___EnvironmentMetrics = EnvironmentMetrics

@typing.final
class PowerMetrics(google.protobuf.message.Message):
    """
    Power Metrics (voltage / current / etc)
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    CH1_VOLTAGE_FIELD_NUMBER: builtins.int
    CH1_CURRENT_FIELD_NUMBER: builtins.int
    CH2_VOLTAGE_FIELD_NUMBER: builtins.int
    CH2_CURRENT_FIELD_NUMBER: builtins.int
    CH3_VOLTAGE_FIELD_NUMBER: builtins.int
    CH3_CURRENT_FIELD_NUMBER: builtins.int
    ch1_voltage: builtins.float
    """
    Voltage (Ch1)
    """
    ch1_current: builtins.float
    """
    Current (Ch1)
    """
    ch2_voltage: builtins.float
    """
    Voltage (Ch2)
    """
    ch2_current: builtins.float
    """
    Current (Ch2)
    """
    ch3_voltage: builtins.float
    """
    Voltage (Ch3)
    """
    ch3_current: builtins.float
    """
    Current (Ch3)
    """
    def __init__(
        self,
        *,
        ch1_voltage: builtins.float | None = ...,
        ch1_current: builtins.float | None = ...,
        ch2_voltage: builtins.float | None = ...,
        ch2_current: builtins.float | None = ...,
        ch3_voltage: builtins.float | None = ...,
        ch3_current: builtins.float | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["_ch1_current", b"_ch1_current", "_ch1_voltage", b"_ch1_voltage", "_ch2_current", b"_ch2_current", "_ch2_voltage", b"_ch2_voltage", "_ch3_current", b"_ch3_current", "_ch3_voltage", b"_ch3_voltage", "ch1_current", b"ch1_current", "ch1_voltage", b"ch1_voltage", "ch2_current", b"ch2_current", "ch2_voltage", b"ch2_voltage", "ch3_current", b"ch3_current", "ch3_voltage", b"ch3_voltage"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["_ch1_current", b"_ch1_current", "_ch1_voltage", b"_ch1_voltage", "_ch2_current", b"_ch2_current", "_ch2_voltage", b"_ch2_voltage", "_ch3_current", b"_ch3_current", "_ch3_voltage", b"_ch3_voltage", "ch1_current", b"ch1_current", "ch1_voltage", b"ch1_voltage", "ch2_current", b"ch2_current", "ch2_voltage", b"ch2_voltage", "ch3_current", b"ch3_current", "ch3_voltage", b"ch3_voltage"]) -> None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_ch1_current", b"_ch1_current"]) -> typing.Literal["ch1_current"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_ch1_voltage", b"_ch1_voltage"]) -> typing.Literal["ch1_voltage"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_ch2_current", b"_ch2_current"]) -> typing.Literal["ch2_current"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_ch2_voltage", b"_ch2_voltage"]) -> typing.Literal["ch2_voltage"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_ch3_current", b"_ch3_current"]) -> typing.Literal["ch3_current"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_ch3_voltage", b"_ch3_voltage"]) -> typing.Literal["ch3_voltage"] | None: ...

global___PowerMetrics = PowerMetrics

@typing.final
class AirQualityMetrics(google.protobuf.message.Message):
    """
    Air quality metrics
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    PM10_STANDARD_FIELD_NUMBER: builtins.int
    PM25_STANDARD_FIELD_NUMBER: builtins.int
    PM100_STANDARD_FIELD_NUMBER: builtins.int
    PM10_ENVIRONMENTAL_FIELD_NUMBER: builtins.int
    PM25_ENVIRONMENTAL_FIELD_NUMBER: builtins.int
    PM100_ENVIRONMENTAL_FIELD_NUMBER: builtins.int
    PARTICLES_03UM_FIELD_NUMBER: builtins.int
    PARTICLES_05UM_FIELD_NUMBER: builtins.int
    PARTICLES_10UM_FIELD_NUMBER: builtins.int
    PARTICLES_25UM_FIELD_NUMBER: builtins.int
    PARTICLES_50UM_FIELD_NUMBER: builtins.int
    PARTICLES_100UM_FIELD_NUMBER: builtins.int
    pm10_standard: builtins.int
    """
    Concentration Units Standard PM1.0
    """
    pm25_standard: builtins.int
    """
    Concentration Units Standard PM2.5
    """
    pm100_standard: builtins.int
    """
    Concentration Units Standard PM10.0
    """
    pm10_environmental: builtins.int
    """
    Concentration Units Environmental PM1.0
    """
    pm25_environmental: builtins.int
    """
    Concentration Units Environmental PM2.5
    """
    pm100_environmental: builtins.int
    """
    Concentration Units Environmental PM10.0
    """
    particles_03um: builtins.int
    """
    0.3um Particle Count
    """
    particles_05um: builtins.int
    """
    0.5um Particle Count
    """
    particles_10um: builtins.int
    """
    1.0um Particle Count
    """
    particles_25um: builtins.int
    """
    2.5um Particle Count
    """
    particles_50um: builtins.int
    """
    5.0um Particle Count
    """
    particles_100um: builtins.int
    """
    10.0um Particle Count
    """
    def __init__(
        self,
        *,
        pm10_standard: builtins.int | None = ...,
        pm25_standard: builtins.int | None = ...,
        pm100_standard: builtins.int | None = ...,
        pm10_environmental: builtins.int | None = ...,
        pm25_environmental: builtins.int | None = ...,
        pm100_environmental: builtins.int | None = ...,
        particles_03um: builtins.int | None = ...,
        particles_05um: builtins.int | None = ...,
        particles_10um: builtins.int | None = ...,
        particles_25um: builtins.int | None = ...,
        particles_50um: builtins.int | None = ...,
        particles_100um: builtins.int | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["_particles_03um", b"_particles_03um", "_particles_05um", b"_particles_05um", "_particles_100um", b"_particles_100um", "_particles_10um", b"_particles_10um", "_particles_25um", b"_particles_25um", "_particles_50um", b"_particles_50um", "_pm100_environmental", b"_pm100_environmental", "_pm100_standard", b"_pm100_standard", "_pm10_environmental", b"_pm10_environmental", "_pm10_standard", b"_pm10_standard", "_pm25_environmental", b"_pm25_environmental", "_pm25_standard", b"_pm25_standard", "particles_03um", b"particles_03um", "particles_05um", b"particles_05um", "particles_100um", b"particles_100um", "particles_10um", b"particles_10um", "particles_25um", b"particles_25um", "particles_50um", b"particles_50um", "pm100_environmental", b"pm100_environmental", "pm100_standard", b"pm100_standard", "pm10_environmental", b"pm10_environmental", "pm10_standard", b"pm10_standard", "pm25_environmental", b"pm25_environmental", "pm25_standard", b"pm25_standard"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["_particles_03um", b"_particles_03um", "_particles_05um", b"_particles_05um", "_particles_100um", b"_particles_100um", "_particles_10um", b"_particles_10um", "_particles_25um", b"_particles_25um", "_particles_50um", b"_particles_50um", "_pm100_environmental", b"_pm100_environmental", "_pm100_standard", b"_pm100_standard", "_pm10_environmental", b"_pm10_environmental", "_pm10_standard", b"_pm10_standard", "_pm25_environmental", b"_pm25_environmental", "_pm25_standard", b"_pm25_standard", "particles_03um", b"particles_03um", "particles_05um", b"particles_05um", "particles_100um", b"particles_100um", "particles_10um", b"particles_10um", "particles_25um", b"particles_25um", "particles_50um", b"particles_50um", "pm100_environmental", b"pm100_environmental", "pm100_standard", b"pm100_standard", "pm10_environmental", b"pm10_environmental", "pm10_standard", b"pm10_standard", "pm25_environmental", b"pm25_environmental", "pm25_standard", b"pm25_standard"]) -> None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_particles_03um", b"_particles_03um"]) -> typing.Literal["particles_03um"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_particles_05um", b"_particles_05um"]) -> typing.Literal["particles_05um"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_particles_100um", b"_particles_100um"]) -> typing.Literal["particles_100um"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_particles_10um", b"_particles_10um"]) -> typing.Literal["particles_10um"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_particles_25um", b"_particles_25um"]) -> typing.Literal["particles_25um"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_particles_50um", b"_particles_50um"]) -> typing.Literal["particles_50um"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_pm100_environmental", b"_pm100_environmental"]) -> typing.Literal["pm100_environmental"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_pm100_standard", b"_pm100_standard"]) -> typing.Literal["pm100_standard"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_pm10_environmental", b"_pm10_environmental"]) -> typing.Literal["pm10_environmental"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_pm10_standard", b"_pm10_standard"]) -> typing.Literal["pm10_standard"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_pm25_environmental", b"_pm25_environmental"]) -> typing.Literal["pm25_environmental"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_pm25_standard", b"_pm25_standard"]) -> typing.Literal["pm25_standard"] | None: ...

global___AirQualityMetrics = AirQualityMetrics

@typing.final
class LocalStats(google.protobuf.message.Message):
    """
    Local device mesh statistics
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    UPTIME_SECONDS_FIELD_NUMBER: builtins.int
    CHANNEL_UTILIZATION_FIELD_NUMBER: builtins.int
    AIR_UTIL_TX_FIELD_NUMBER: builtins.int
    NUM_PACKETS_TX_FIELD_NUMBER: builtins.int
    NUM_PACKETS_RX_FIELD_NUMBER: builtins.int
    NUM_PACKETS_RX_BAD_FIELD_NUMBER: builtins.int
    NUM_ONLINE_NODES_FIELD_NUMBER: builtins.int
    NUM_TOTAL_NODES_FIELD_NUMBER: builtins.int
    uptime_seconds: builtins.int
    """
    How long the device has been running since the last reboot (in seconds)
    """
    channel_utilization: builtins.float
    """
    Utilization for the current channel, including well formed TX, RX and malformed RX (aka noise).
    """
    air_util_tx: builtins.float
    """
    Percent of airtime for transmission used within the last hour.
    """
    num_packets_tx: builtins.int
    """
    Number of packets sent
    """
    num_packets_rx: builtins.int
    """
    Number of packets received good
    """
    num_packets_rx_bad: builtins.int
    """
    Number of packets received that are malformed or violate the protocol
    """
    num_online_nodes: builtins.int
    """
    Number of nodes online (in the past 2 hours)
    """
    num_total_nodes: builtins.int
    """
    Number of nodes total
    """
    def __init__(
        self,
        *,
        uptime_seconds: builtins.int = ...,
        channel_utilization: builtins.float = ...,
        air_util_tx: builtins.float = ...,
        num_packets_tx: builtins.int = ...,
        num_packets_rx: builtins.int = ...,
        num_packets_rx_bad: builtins.int = ...,
        num_online_nodes: builtins.int = ...,
        num_total_nodes: builtins.int = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["air_util_tx", b"air_util_tx", "channel_utilization", b"channel_utilization", "num_online_nodes", b"num_online_nodes", "num_packets_rx", b"num_packets_rx", "num_packets_rx_bad", b"num_packets_rx_bad", "num_packets_tx", b"num_packets_tx", "num_total_nodes", b"num_total_nodes", "uptime_seconds", b"uptime_seconds"]) -> None: ...

global___LocalStats = LocalStats

@typing.final
class Telemetry(google.protobuf.message.Message):
    """
    Types of Measurements the telemetry module is equipped to handle
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    TIME_FIELD_NUMBER: builtins.int
    DEVICE_METRICS_FIELD_NUMBER: builtins.int
    ENVIRONMENT_METRICS_FIELD_NUMBER: builtins.int
    AIR_QUALITY_METRICS_FIELD_NUMBER: builtins.int
    POWER_METRICS_FIELD_NUMBER: builtins.int
    LOCAL_STATS_FIELD_NUMBER: builtins.int
    time: builtins.int
    """
    Seconds since 1970 - or 0 for unknown/unset
    """
    @property
    def device_metrics(self) -> global___DeviceMetrics:
        """
        Key native device metrics such as battery level
        """

    @property
    def environment_metrics(self) -> global___EnvironmentMetrics:
        """
        Weather station or other environmental metrics
        """

    @property
    def air_quality_metrics(self) -> global___AirQualityMetrics:
        """
        Air quality metrics
        """

    @property
    def power_metrics(self) -> global___PowerMetrics:
        """
        Power Metrics
        """

    @property
    def local_stats(self) -> global___LocalStats:
        """
        Local device mesh statistics
        """

    def __init__(
        self,
        *,
        time: builtins.int = ...,
        device_metrics: global___DeviceMetrics | None = ...,
        environment_metrics: global___EnvironmentMetrics | None = ...,
        air_quality_metrics: global___AirQualityMetrics | None = ...,
        power_metrics: global___PowerMetrics | None = ...,
        local_stats: global___LocalStats | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["air_quality_metrics", b"air_quality_metrics", "device_metrics", b"device_metrics", "environment_metrics", b"environment_metrics", "local_stats", b"local_stats", "power_metrics", b"power_metrics", "variant", b"variant"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["air_quality_metrics", b"air_quality_metrics", "device_metrics", b"device_metrics", "environment_metrics", b"environment_metrics", "local_stats", b"local_stats", "power_metrics", b"power_metrics", "time", b"time", "variant", b"variant"]) -> None: ...
    def WhichOneof(self, oneof_group: typing.Literal["variant", b"variant"]) -> typing.Literal["device_metrics", "environment_metrics", "air_quality_metrics", "power_metrics", "local_stats"] | None: ...

global___Telemetry = Telemetry

@typing.final
class Nau7802Config(google.protobuf.message.Message):
    """
    NAU7802 Telemetry configuration, for saving to flash
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ZEROOFFSET_FIELD_NUMBER: builtins.int
    CALIBRATIONFACTOR_FIELD_NUMBER: builtins.int
    zeroOffset: builtins.int
    """
    The offset setting for the NAU7802
    """
    calibrationFactor: builtins.float
    """
    The calibration factor for the NAU7802
    """
    def __init__(
        self,
        *,
        zeroOffset: builtins.int = ...,
        calibrationFactor: builtins.float = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["calibrationFactor", b"calibrationFactor", "zeroOffset", b"zeroOffset"]) -> None: ...

global___Nau7802Config = Nau7802Config
