"""
@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 _CompassMode:
    ValueType = typing.NewType("ValueType", builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _CompassModeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_CompassMode.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    DYNAMIC: _CompassMode.ValueType  # 0
    """
    Compass with dynamic ring and heading
    """
    FIXED_RING: _CompassMode.ValueType  # 1
    """
    Compass with fixed ring and heading
    """
    FREEZE_HEADING: _CompassMode.ValueType  # 2
    """
    Compass with heading and freeze option
    """

class CompassMode(_CompassMode, metaclass=_CompassModeEnumTypeWrapper): ...

DYNAMIC: CompassMode.ValueType  # 0
"""
Compass with dynamic ring and heading
"""
FIXED_RING: CompassMode.ValueType  # 1
"""
Compass with fixed ring and heading
"""
FREEZE_HEADING: CompassMode.ValueType  # 2
"""
Compass with heading and freeze option
"""
global___CompassMode = CompassMode

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

class _ThemeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_Theme.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    DARK: _Theme.ValueType  # 0
    """
    Dark
    """
    LIGHT: _Theme.ValueType  # 1
    """
    Light
    """
    RED: _Theme.ValueType  # 2
    """
    Red
    """

class Theme(_Theme, metaclass=_ThemeEnumTypeWrapper): ...

DARK: Theme.ValueType  # 0
"""
Dark
"""
LIGHT: Theme.ValueType  # 1
"""
Light
"""
RED: Theme.ValueType  # 2
"""
Red
"""
global___Theme = Theme

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

class _LanguageEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_Language.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    ENGLISH: _Language.ValueType  # 0
    """
    English
    """
    FRENCH: _Language.ValueType  # 1
    """
    French
    """
    GERMAN: _Language.ValueType  # 2
    """
    German
    """
    ITALIAN: _Language.ValueType  # 3
    """
    Italian
    """
    PORTUGUESE: _Language.ValueType  # 4
    """
    Portuguese
    """
    SPANISH: _Language.ValueType  # 5
    """
    Spanish
    """
    SWEDISH: _Language.ValueType  # 6
    """
    Swedish
    """
    FINNISH: _Language.ValueType  # 7
    """
    Finnish
    """
    POLISH: _Language.ValueType  # 8
    """
    Polish
    """
    TURKISH: _Language.ValueType  # 9
    """
    Turkish
    """
    SERBIAN: _Language.ValueType  # 10
    """
    Serbian
    """
    RUSSIAN: _Language.ValueType  # 11
    """
    Russian
    """
    DUTCH: _Language.ValueType  # 12
    """
    Dutch
    """
    GREEK: _Language.ValueType  # 13
    """
    Greek
    """
    NORWEGIAN: _Language.ValueType  # 14
    """
    Norwegian
    """
    SLOVENIAN: _Language.ValueType  # 15
    """
    Slovenian
    """
    UKRAINIAN: _Language.ValueType  # 16
    """
    Ukrainian
    """
    BULGARIAN: _Language.ValueType  # 17
    """
    Bulgarian
    """
    CZECH: _Language.ValueType  # 18
    """
    Czech
    """
    DANISH: _Language.ValueType  # 19
    """
    Danish
    """
    SIMPLIFIED_CHINESE: _Language.ValueType  # 30
    """
    Simplified Chinese (experimental)
    """
    TRADITIONAL_CHINESE: _Language.ValueType  # 31
    """
    Traditional Chinese (experimental)
    """

class Language(_Language, metaclass=_LanguageEnumTypeWrapper):
    """
    Localization
    """

ENGLISH: Language.ValueType  # 0
"""
English
"""
FRENCH: Language.ValueType  # 1
"""
French
"""
GERMAN: Language.ValueType  # 2
"""
German
"""
ITALIAN: Language.ValueType  # 3
"""
Italian
"""
PORTUGUESE: Language.ValueType  # 4
"""
Portuguese
"""
SPANISH: Language.ValueType  # 5
"""
Spanish
"""
SWEDISH: Language.ValueType  # 6
"""
Swedish
"""
FINNISH: Language.ValueType  # 7
"""
Finnish
"""
POLISH: Language.ValueType  # 8
"""
Polish
"""
TURKISH: Language.ValueType  # 9
"""
Turkish
"""
SERBIAN: Language.ValueType  # 10
"""
Serbian
"""
RUSSIAN: Language.ValueType  # 11
"""
Russian
"""
DUTCH: Language.ValueType  # 12
"""
Dutch
"""
GREEK: Language.ValueType  # 13
"""
Greek
"""
NORWEGIAN: Language.ValueType  # 14
"""
Norwegian
"""
SLOVENIAN: Language.ValueType  # 15
"""
Slovenian
"""
UKRAINIAN: Language.ValueType  # 16
"""
Ukrainian
"""
BULGARIAN: Language.ValueType  # 17
"""
Bulgarian
"""
CZECH: Language.ValueType  # 18
"""
Czech
"""
DANISH: Language.ValueType  # 19
"""
Danish
"""
SIMPLIFIED_CHINESE: Language.ValueType  # 30
"""
Simplified Chinese (experimental)
"""
TRADITIONAL_CHINESE: Language.ValueType  # 31
"""
Traditional Chinese (experimental)
"""
global___Language = Language

@typing.final
class DeviceUIConfig(google.protobuf.message.Message):
    """
    Protobuf structures for device-ui persistency
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

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

    class _GpsCoordinateFormatEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[DeviceUIConfig._GpsCoordinateFormat.ValueType], builtins.type):
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
        DEC: DeviceUIConfig._GpsCoordinateFormat.ValueType  # 0
        """
        GPS coordinates are displayed in the normal decimal degrees format:
        DD.DDDDDD DDD.DDDDDD
        """
        DMS: DeviceUIConfig._GpsCoordinateFormat.ValueType  # 1
        """
        GPS coordinates are displayed in the degrees minutes seconds format:
        DD°MM'SS"C DDD°MM'SS"C, where C is the compass point representing the locations quadrant
        """
        UTM: DeviceUIConfig._GpsCoordinateFormat.ValueType  # 2
        """
        Universal Transverse Mercator format:
        ZZB EEEEEE NNNNNNN, where Z is zone, B is band, E is easting, N is northing
        """
        MGRS: DeviceUIConfig._GpsCoordinateFormat.ValueType  # 3
        """
        Military Grid Reference System format:
        ZZB CD EEEEE NNNNN, where Z is zone, B is band, C is the east 100k square, D is the north 100k square,
        E is easting, N is northing
        """
        OLC: DeviceUIConfig._GpsCoordinateFormat.ValueType  # 4
        """
        Open Location Code (aka Plus Codes).
        """
        OSGR: DeviceUIConfig._GpsCoordinateFormat.ValueType  # 5
        """
        Ordnance Survey Grid Reference (the National Grid System of the UK).
        Format: AB EEEEE NNNNN, where A is the east 100k square, B is the north 100k square,
        E is the easting, N is the northing
        """
        MLS: DeviceUIConfig._GpsCoordinateFormat.ValueType  # 6
        """
        Maidenhead Locator System
        Described here: https://en.wikipedia.org/wiki/Maidenhead_Locator_System
        """

    class GpsCoordinateFormat(_GpsCoordinateFormat, metaclass=_GpsCoordinateFormatEnumTypeWrapper):
        """
        How the GPS coordinates are displayed on the OLED screen.
        """

    DEC: DeviceUIConfig.GpsCoordinateFormat.ValueType  # 0
    """
    GPS coordinates are displayed in the normal decimal degrees format:
    DD.DDDDDD DDD.DDDDDD
    """
    DMS: DeviceUIConfig.GpsCoordinateFormat.ValueType  # 1
    """
    GPS coordinates are displayed in the degrees minutes seconds format:
    DD°MM'SS"C DDD°MM'SS"C, where C is the compass point representing the locations quadrant
    """
    UTM: DeviceUIConfig.GpsCoordinateFormat.ValueType  # 2
    """
    Universal Transverse Mercator format:
    ZZB EEEEEE NNNNNNN, where Z is zone, B is band, E is easting, N is northing
    """
    MGRS: DeviceUIConfig.GpsCoordinateFormat.ValueType  # 3
    """
    Military Grid Reference System format:
    ZZB CD EEEEE NNNNN, where Z is zone, B is band, C is the east 100k square, D is the north 100k square,
    E is easting, N is northing
    """
    OLC: DeviceUIConfig.GpsCoordinateFormat.ValueType  # 4
    """
    Open Location Code (aka Plus Codes).
    """
    OSGR: DeviceUIConfig.GpsCoordinateFormat.ValueType  # 5
    """
    Ordnance Survey Grid Reference (the National Grid System of the UK).
    Format: AB EEEEE NNNNN, where A is the east 100k square, B is the north 100k square,
    E is the easting, N is the northing
    """
    MLS: DeviceUIConfig.GpsCoordinateFormat.ValueType  # 6
    """
    Maidenhead Locator System
    Described here: https://en.wikipedia.org/wiki/Maidenhead_Locator_System
    """

    VERSION_FIELD_NUMBER: builtins.int
    SCREEN_BRIGHTNESS_FIELD_NUMBER: builtins.int
    SCREEN_TIMEOUT_FIELD_NUMBER: builtins.int
    SCREEN_LOCK_FIELD_NUMBER: builtins.int
    SETTINGS_LOCK_FIELD_NUMBER: builtins.int
    PIN_CODE_FIELD_NUMBER: builtins.int
    THEME_FIELD_NUMBER: builtins.int
    ALERT_ENABLED_FIELD_NUMBER: builtins.int
    BANNER_ENABLED_FIELD_NUMBER: builtins.int
    RING_TONE_ID_FIELD_NUMBER: builtins.int
    LANGUAGE_FIELD_NUMBER: builtins.int
    NODE_FILTER_FIELD_NUMBER: builtins.int
    NODE_HIGHLIGHT_FIELD_NUMBER: builtins.int
    CALIBRATION_DATA_FIELD_NUMBER: builtins.int
    MAP_DATA_FIELD_NUMBER: builtins.int
    COMPASS_MODE_FIELD_NUMBER: builtins.int
    SCREEN_RGB_COLOR_FIELD_NUMBER: builtins.int
    IS_CLOCKFACE_ANALOG_FIELD_NUMBER: builtins.int
    GPS_FORMAT_FIELD_NUMBER: builtins.int
    version: builtins.int
    """
    A version integer used to invalidate saved files when we make incompatible changes.
    """
    screen_brightness: builtins.int
    """
    TFT display brightness 1..255
    """
    screen_timeout: builtins.int
    """
    Screen timeout 0..900
    """
    screen_lock: builtins.bool
    """
    Screen/Settings lock enabled
    """
    settings_lock: builtins.bool
    pin_code: builtins.int
    theme: global___Theme.ValueType
    """
    Color theme
    """
    alert_enabled: builtins.bool
    """
    Audible message, banner and ring tone
    """
    banner_enabled: builtins.bool
    ring_tone_id: builtins.int
    language: global___Language.ValueType
    """
    Localization
    """
    calibration_data: builtins.bytes
    """
    8 integers for screen calibration data
    """
    compass_mode: global___CompassMode.ValueType
    """
    Compass mode
    """
    screen_rgb_color: builtins.int
    """
    RGB color for BaseUI
    0xRRGGBB format, e.g. 0xFF0000 for red
    """
    is_clockface_analog: builtins.bool
    """
    Clockface analog style
    true for analog clockface, false for digital clockface
    """
    gps_format: global___DeviceUIConfig.GpsCoordinateFormat.ValueType
    """
    How the GPS coordinates are formatted on the OLED screen.
    """
    @property
    def node_filter(self) -> global___NodeFilter:
        """
        Node list filter
        """

    @property
    def node_highlight(self) -> global___NodeHighlight:
        """
        Node list highlightening
        """

    @property
    def map_data(self) -> global___Map:
        """
        Map related data
        """

    def __init__(
        self,
        *,
        version: builtins.int = ...,
        screen_brightness: builtins.int = ...,
        screen_timeout: builtins.int = ...,
        screen_lock: builtins.bool = ...,
        settings_lock: builtins.bool = ...,
        pin_code: builtins.int = ...,
        theme: global___Theme.ValueType = ...,
        alert_enabled: builtins.bool = ...,
        banner_enabled: builtins.bool = ...,
        ring_tone_id: builtins.int = ...,
        language: global___Language.ValueType = ...,
        node_filter: global___NodeFilter | None = ...,
        node_highlight: global___NodeHighlight | None = ...,
        calibration_data: builtins.bytes = ...,
        map_data: global___Map | None = ...,
        compass_mode: global___CompassMode.ValueType = ...,
        screen_rgb_color: builtins.int = ...,
        is_clockface_analog: builtins.bool = ...,
        gps_format: global___DeviceUIConfig.GpsCoordinateFormat.ValueType = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["map_data", b"map_data", "node_filter", b"node_filter", "node_highlight", b"node_highlight"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["alert_enabled", b"alert_enabled", "banner_enabled", b"banner_enabled", "calibration_data", b"calibration_data", "compass_mode", b"compass_mode", "gps_format", b"gps_format", "is_clockface_analog", b"is_clockface_analog", "language", b"language", "map_data", b"map_data", "node_filter", b"node_filter", "node_highlight", b"node_highlight", "pin_code", b"pin_code", "ring_tone_id", b"ring_tone_id", "screen_brightness", b"screen_brightness", "screen_lock", b"screen_lock", "screen_rgb_color", b"screen_rgb_color", "screen_timeout", b"screen_timeout", "settings_lock", b"settings_lock", "theme", b"theme", "version", b"version"]) -> None: ...

global___DeviceUIConfig = DeviceUIConfig

@typing.final
class NodeFilter(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    UNKNOWN_SWITCH_FIELD_NUMBER: builtins.int
    OFFLINE_SWITCH_FIELD_NUMBER: builtins.int
    PUBLIC_KEY_SWITCH_FIELD_NUMBER: builtins.int
    HOPS_AWAY_FIELD_NUMBER: builtins.int
    POSITION_SWITCH_FIELD_NUMBER: builtins.int
    NODE_NAME_FIELD_NUMBER: builtins.int
    CHANNEL_FIELD_NUMBER: builtins.int
    unknown_switch: builtins.bool
    """
    Filter unknown nodes
    """
    offline_switch: builtins.bool
    """
    Filter offline nodes
    """
    public_key_switch: builtins.bool
    """
    Filter nodes w/o public key
    """
    hops_away: builtins.int
    """
    Filter based on hops away
    """
    position_switch: builtins.bool
    """
    Filter nodes w/o position
    """
    node_name: builtins.str
    """
    Filter nodes by matching name string
    """
    channel: builtins.int
    """
    Filter based on channel
    """
    def __init__(
        self,
        *,
        unknown_switch: builtins.bool = ...,
        offline_switch: builtins.bool = ...,
        public_key_switch: builtins.bool = ...,
        hops_away: builtins.int = ...,
        position_switch: builtins.bool = ...,
        node_name: builtins.str = ...,
        channel: builtins.int = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["channel", b"channel", "hops_away", b"hops_away", "node_name", b"node_name", "offline_switch", b"offline_switch", "position_switch", b"position_switch", "public_key_switch", b"public_key_switch", "unknown_switch", b"unknown_switch"]) -> None: ...

global___NodeFilter = NodeFilter

@typing.final
class NodeHighlight(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    CHAT_SWITCH_FIELD_NUMBER: builtins.int
    POSITION_SWITCH_FIELD_NUMBER: builtins.int
    TELEMETRY_SWITCH_FIELD_NUMBER: builtins.int
    IAQ_SWITCH_FIELD_NUMBER: builtins.int
    NODE_NAME_FIELD_NUMBER: builtins.int
    chat_switch: builtins.bool
    """
    Hightlight nodes w/ active chat
    """
    position_switch: builtins.bool
    """
    Highlight nodes w/ position
    """
    telemetry_switch: builtins.bool
    """
    Highlight nodes w/ telemetry data
    """
    iaq_switch: builtins.bool
    """
    Highlight nodes w/ iaq data
    """
    node_name: builtins.str
    """
    Highlight nodes by matching name string
    """
    def __init__(
        self,
        *,
        chat_switch: builtins.bool = ...,
        position_switch: builtins.bool = ...,
        telemetry_switch: builtins.bool = ...,
        iaq_switch: builtins.bool = ...,
        node_name: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["chat_switch", b"chat_switch", "iaq_switch", b"iaq_switch", "node_name", b"node_name", "position_switch", b"position_switch", "telemetry_switch", b"telemetry_switch"]) -> None: ...

global___NodeHighlight = NodeHighlight

@typing.final
class GeoPoint(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ZOOM_FIELD_NUMBER: builtins.int
    LATITUDE_FIELD_NUMBER: builtins.int
    LONGITUDE_FIELD_NUMBER: builtins.int
    zoom: builtins.int
    """
    Zoom level
    """
    latitude: builtins.int
    """
    Coordinate: latitude
    """
    longitude: builtins.int
    """
    Coordinate: longitude
    """
    def __init__(
        self,
        *,
        zoom: builtins.int = ...,
        latitude: builtins.int = ...,
        longitude: builtins.int = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["latitude", b"latitude", "longitude", b"longitude", "zoom", b"zoom"]) -> None: ...

global___GeoPoint = GeoPoint

@typing.final
class Map(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    HOME_FIELD_NUMBER: builtins.int
    STYLE_FIELD_NUMBER: builtins.int
    FOLLOW_GPS_FIELD_NUMBER: builtins.int
    style: builtins.str
    """
    Map tile style
    """
    follow_gps: builtins.bool
    """
    Map scroll follows GPS
    """
    @property
    def home(self) -> global___GeoPoint:
        """
        Home coordinates
        """

    def __init__(
        self,
        *,
        home: global___GeoPoint | None = ...,
        style: builtins.str = ...,
        follow_gps: builtins.bool = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["home", b"home"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["follow_gps", b"follow_gps", "home", b"home", "style", b"style"]) -> None: ...

global___Map = Map
