"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
trunk-ignore(buf-lint/PACKAGE_DIRECTORY_MATCH)"""

import builtins
import collections.abc
import google.protobuf.descriptor
import google.protobuf.internal.containers
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 _Team:
    ValueType = typing.NewType("ValueType", builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _TeamEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_Team.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    Unspecifed_Color: _Team.ValueType  # 0
    """
    Unspecifed
    """
    White: _Team.ValueType  # 1
    """
    White
    """
    Yellow: _Team.ValueType  # 2
    """
    Yellow
    """
    Orange: _Team.ValueType  # 3
    """
    Orange
    """
    Magenta: _Team.ValueType  # 4
    """
    Magenta
    """
    Red: _Team.ValueType  # 5
    """
    Red
    """
    Maroon: _Team.ValueType  # 6
    """
    Maroon
    """
    Purple: _Team.ValueType  # 7
    """
    Purple
    """
    Dark_Blue: _Team.ValueType  # 8
    """
    Dark Blue
    """
    Blue: _Team.ValueType  # 9
    """
    Blue
    """
    Cyan: _Team.ValueType  # 10
    """
    Cyan
    """
    Teal: _Team.ValueType  # 11
    """
    Teal
    """
    Green: _Team.ValueType  # 12
    """
    Green
    """
    Dark_Green: _Team.ValueType  # 13
    """
    Dark Green
    """
    Brown: _Team.ValueType  # 14
    """
    Brown
    """

class Team(_Team, metaclass=_TeamEnumTypeWrapper): ...

Unspecifed_Color: Team.ValueType  # 0
"""
Unspecifed
"""
White: Team.ValueType  # 1
"""
White
"""
Yellow: Team.ValueType  # 2
"""
Yellow
"""
Orange: Team.ValueType  # 3
"""
Orange
"""
Magenta: Team.ValueType  # 4
"""
Magenta
"""
Red: Team.ValueType  # 5
"""
Red
"""
Maroon: Team.ValueType  # 6
"""
Maroon
"""
Purple: Team.ValueType  # 7
"""
Purple
"""
Dark_Blue: Team.ValueType  # 8
"""
Dark Blue
"""
Blue: Team.ValueType  # 9
"""
Blue
"""
Cyan: Team.ValueType  # 10
"""
Cyan
"""
Teal: Team.ValueType  # 11
"""
Teal
"""
Green: Team.ValueType  # 12
"""
Green
"""
Dark_Green: Team.ValueType  # 13
"""
Dark Green
"""
Brown: Team.ValueType  # 14
"""
Brown
"""
global___Team = Team

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

class _MemberRoleEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_MemberRole.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    Unspecifed: _MemberRole.ValueType  # 0
    """
    Unspecifed
    """
    TeamMember: _MemberRole.ValueType  # 1
    """
    Team Member
    """
    TeamLead: _MemberRole.ValueType  # 2
    """
    Team Lead
    """
    HQ: _MemberRole.ValueType  # 3
    """
    Headquarters
    """
    Sniper: _MemberRole.ValueType  # 4
    """
    Airsoft enthusiast
    """
    Medic: _MemberRole.ValueType  # 5
    """
    Medic
    """
    ForwardObserver: _MemberRole.ValueType  # 6
    """
    ForwardObserver
    """
    RTO: _MemberRole.ValueType  # 7
    """
    Radio Telephone Operator
    """
    K9: _MemberRole.ValueType  # 8
    """
    Doggo
    """

class MemberRole(_MemberRole, metaclass=_MemberRoleEnumTypeWrapper):
    """
    Role of the group member
    """

Unspecifed: MemberRole.ValueType  # 0
"""
Unspecifed
"""
TeamMember: MemberRole.ValueType  # 1
"""
Team Member
"""
TeamLead: MemberRole.ValueType  # 2
"""
Team Lead
"""
HQ: MemberRole.ValueType  # 3
"""
Headquarters
"""
Sniper: MemberRole.ValueType  # 4
"""
Airsoft enthusiast
"""
Medic: MemberRole.ValueType  # 5
"""
Medic
"""
ForwardObserver: MemberRole.ValueType  # 6
"""
ForwardObserver
"""
RTO: MemberRole.ValueType  # 7
"""
Radio Telephone Operator
"""
K9: MemberRole.ValueType  # 8
"""
Doggo
"""
global___MemberRole = MemberRole

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

class _CotHowEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_CotHow.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    CotHow_Unspecified: _CotHow.ValueType  # 0
    """
    Unspecified
    """
    CotHow_h_e: _CotHow.ValueType  # 1
    """
    Human entered
    """
    CotHow_m_g: _CotHow.ValueType  # 2
    """
    Machine generated
    """
    CotHow_h_g_i_g_o: _CotHow.ValueType  # 3
    """
    Human GPS/INS derived
    """
    CotHow_m_r: _CotHow.ValueType  # 4
    """
    Machine relayed (imported from another system/gateway)
    """
    CotHow_m_f: _CotHow.ValueType  # 5
    """
    Machine fused (corroborated from multiple sources)
    """
    CotHow_m_p: _CotHow.ValueType  # 6
    """
    Machine predicted
    """
    CotHow_m_s: _CotHow.ValueType  # 7
    """
    Machine simulated
    """

class CotHow(_CotHow, metaclass=_CotHowEnumTypeWrapper):
    """
    CoT how field values.
    Represents how the coordinates were generated.
    """

CotHow_Unspecified: CotHow.ValueType  # 0
"""
Unspecified
"""
CotHow_h_e: CotHow.ValueType  # 1
"""
Human entered
"""
CotHow_m_g: CotHow.ValueType  # 2
"""
Machine generated
"""
CotHow_h_g_i_g_o: CotHow.ValueType  # 3
"""
Human GPS/INS derived
"""
CotHow_m_r: CotHow.ValueType  # 4
"""
Machine relayed (imported from another system/gateway)
"""
CotHow_m_f: CotHow.ValueType  # 5
"""
Machine fused (corroborated from multiple sources)
"""
CotHow_m_p: CotHow.ValueType  # 6
"""
Machine predicted
"""
CotHow_m_s: CotHow.ValueType  # 7
"""
Machine simulated
"""
global___CotHow = CotHow

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

class _CotTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_CotType.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    CotType_Other: _CotType.ValueType  # 0
    """
    Unknown or unmapped type, use cot_type_str
    """
    CotType_a_f_G_U_C: _CotType.ValueType  # 1
    """
    a-f-G-U-C: Friendly ground unit combat
    """
    CotType_a_f_G_U_C_I: _CotType.ValueType  # 2
    """
    a-f-G-U-C-I: Friendly ground unit combat infantry
    """
    CotType_a_n_A_C_F: _CotType.ValueType  # 3
    """
    a-n-A-C-F: Neutral aircraft civilian fixed-wing
    """
    CotType_a_n_A_C_H: _CotType.ValueType  # 4
    """
    a-n-A-C-H: Neutral aircraft civilian helicopter
    """
    CotType_a_n_A_C: _CotType.ValueType  # 5
    """
    a-n-A-C: Neutral aircraft civilian
    """
    CotType_a_f_A_M_H: _CotType.ValueType  # 6
    """
    a-f-A-M-H: Friendly aircraft military helicopter
    """
    CotType_a_f_A_M: _CotType.ValueType  # 7
    """
    a-f-A-M: Friendly aircraft military
    """
    CotType_a_f_A_M_F_F: _CotType.ValueType  # 8
    """
    a-f-A-M-F-F: Friendly aircraft military fixed-wing fighter
    """
    CotType_a_f_A_M_H_A: _CotType.ValueType  # 9
    """
    a-f-A-M-H-A: Friendly aircraft military helicopter attack
    """
    CotType_a_f_A_M_H_U_M: _CotType.ValueType  # 10
    """
    a-f-A-M-H-U-M: Friendly aircraft military helicopter utility medium
    """
    CotType_a_h_A_M_F_F: _CotType.ValueType  # 11
    """
    a-h-A-M-F-F: Hostile aircraft military fixed-wing fighter
    """
    CotType_a_h_A_M_H_A: _CotType.ValueType  # 12
    """
    a-h-A-M-H-A: Hostile aircraft military helicopter attack
    """
    CotType_a_u_A_C: _CotType.ValueType  # 13
    """
    a-u-A-C: Unknown aircraft civilian
    """
    CotType_t_x_d_d: _CotType.ValueType  # 14
    """
    t-x-d-d: Tasking delete/disconnect
    """
    CotType_a_f_G_E_S_E: _CotType.ValueType  # 15
    """
    a-f-G-E-S-E: Friendly ground equipment sensor
    """
    CotType_a_f_G_E_V_C: _CotType.ValueType  # 16
    """
    a-f-G-E-V-C: Friendly ground equipment vehicle
    """
    CotType_a_f_S: _CotType.ValueType  # 17
    """
    a-f-S: Friendly sea
    """
    CotType_a_f_A_M_F: _CotType.ValueType  # 18
    """
    a-f-A-M-F: Friendly aircraft military fixed-wing
    """
    CotType_a_f_A_M_F_C_H: _CotType.ValueType  # 19
    """
    a-f-A-M-F-C-H: Friendly aircraft military fixed-wing cargo heavy
    """
    CotType_a_f_A_M_F_U_L: _CotType.ValueType  # 20
    """
    a-f-A-M-F-U-L: Friendly aircraft military fixed-wing utility light
    """
    CotType_a_f_A_M_F_L: _CotType.ValueType  # 21
    """
    a-f-A-M-F-L: Friendly aircraft military fixed-wing liaison
    """
    CotType_a_f_A_M_F_P: _CotType.ValueType  # 22
    """
    a-f-A-M-F-P: Friendly aircraft military fixed-wing patrol
    """
    CotType_a_f_A_C_H: _CotType.ValueType  # 23
    """
    a-f-A-C-H: Friendly aircraft civilian helicopter
    """
    CotType_a_n_A_M_F_Q: _CotType.ValueType  # 24
    """
    a-n-A-M-F-Q: Neutral aircraft military fixed-wing drone
    """
    CotType_b_t_f: _CotType.ValueType  # 25
    """--- Chat / messaging ---


    b-t-f: GeoChat message
    """
    CotType_b_r_f_h_c: _CotType.ValueType  # 26
    """--- CASEVAC / MEDEVAC ---


    b-r-f-h-c: CASEVAC/MEDEVAC report
    """
    CotType_b_a_o_pan: _CotType.ValueType  # 27
    """--- Alerts ---


    b-a-o-pan: Ring the bell / alert all
    """
    CotType_b_a_o_opn: _CotType.ValueType  # 28
    """
    b-a-o-opn: Troops in contact
    """
    CotType_b_a_o_can: _CotType.ValueType  # 29
    """
    b-a-o-can: Cancel alert
    """
    CotType_b_a_o_tbl: _CotType.ValueType  # 30
    """
    b-a-o-tbl: 911 alert
    """
    CotType_b_a_g: _CotType.ValueType  # 31
    """
    b-a-g: Geofence breach alert
    """
    CotType_a_f_G: _CotType.ValueType  # 32
    """--- Generic ground atoms (simplified affiliation types) ---


    a-f-G: Friendly ground (generic)
    """
    CotType_a_f_G_U: _CotType.ValueType  # 33
    """
    a-f-G-U: Friendly ground unit (generic)
    """
    CotType_a_h_G: _CotType.ValueType  # 34
    """
    a-h-G: Hostile ground (generic)
    """
    CotType_a_u_G: _CotType.ValueType  # 35
    """
    a-u-G: Unknown ground (generic)
    """
    CotType_a_n_G: _CotType.ValueType  # 36
    """
    a-n-G: Neutral ground (generic)
    """
    CotType_b_m_r: _CotType.ValueType  # 37
    """--- Routes and waypoints ---


    b-m-r: Route
    """
    CotType_b_m_p_w: _CotType.ValueType  # 38
    """
    b-m-p-w: Route waypoint
    """
    CotType_b_m_p_s_p_i: _CotType.ValueType  # 39
    """
    b-m-p-s-p-i: Self-position marker
    """
    CotType_u_d_f: _CotType.ValueType  # 40
    """--- Drawing / tactical graphics ---


    u-d-f: Freeform shape (line/polygon)
    """
    CotType_u_d_r: _CotType.ValueType  # 41
    """
    u-d-r: Rectangle
    """
    CotType_u_d_c_c: _CotType.ValueType  # 42
    """
    u-d-c-c: Circle
    """
    CotType_u_rb_a: _CotType.ValueType  # 43
    """
    u-rb-a: Range/bearing line
    """
    CotType_a_h_A: _CotType.ValueType  # 44
    """--- Additional hostile/unknown aircraft ---


    a-h-A: Hostile aircraft (generic)
    """
    CotType_a_u_A: _CotType.ValueType  # 45
    """
    a-u-A: Unknown aircraft (generic)
    """
    CotType_a_f_A_M_H_Q: _CotType.ValueType  # 46
    """
    a-f-A-M-H-Q: Friendly aircraft military helicopter observation
    """
    CotType_a_f_A_C_F: _CotType.ValueType  # 47
    """Friendly aircraft civilian


    a-f-A-C-F: Friendly aircraft civilian fixed-wing
    """
    CotType_a_f_A_C: _CotType.ValueType  # 48
    """
    a-f-A-C: Friendly aircraft civilian (generic)
    """
    CotType_a_f_A_C_L: _CotType.ValueType  # 49
    """
    a-f-A-C-L: Friendly aircraft civilian lighter-than-air
    """
    CotType_a_f_A: _CotType.ValueType  # 50
    """
    a-f-A: Friendly aircraft (generic)
    """
    CotType_a_f_A_M_H_C: _CotType.ValueType  # 51
    """Friendly aircraft military helicopter variants


    a-f-A-M-H-C: Friendly aircraft military helicopter cargo
    """
    CotType_a_n_A_M_F_F: _CotType.ValueType  # 52
    """Neutral aircraft military


    a-n-A-M-F-F: Neutral aircraft military fixed-wing fighter
    """
    CotType_a_u_A_C_F: _CotType.ValueType  # 53
    """Unknown aircraft civilian


    a-u-A-C-F: Unknown aircraft civilian fixed-wing
    """
    CotType_a_f_G_U_C_F_T_A: _CotType.ValueType  # 54
    """Friendly ground unit subtypes


    a-f-G-U-C-F-T-A: Friendly ground unit combat forces theater aviation
    """
    CotType_a_f_G_U_C_V_S: _CotType.ValueType  # 55
    """
    a-f-G-U-C-V-S: Friendly ground unit combat vehicle support
    """
    CotType_a_f_G_U_C_R_X: _CotType.ValueType  # 56
    """
    a-f-G-U-C-R-X: Friendly ground unit combat reconnaissance exploitation
    """
    CotType_a_f_G_U_C_I_Z: _CotType.ValueType  # 57
    """
    a-f-G-U-C-I-Z: Friendly ground unit combat infantry mechanized
    """
    CotType_a_f_G_U_C_E_C_W: _CotType.ValueType  # 58
    """
    a-f-G-U-C-E-C-W: Friendly ground unit combat engineer construction wheeled
    """
    CotType_a_f_G_U_C_I_L: _CotType.ValueType  # 59
    """
    a-f-G-U-C-I-L: Friendly ground unit combat infantry light
    """
    CotType_a_f_G_U_C_R_O: _CotType.ValueType  # 60
    """
    a-f-G-U-C-R-O: Friendly ground unit combat reconnaissance other
    """
    CotType_a_f_G_U_C_R_V: _CotType.ValueType  # 61
    """
    a-f-G-U-C-R-V: Friendly ground unit combat reconnaissance cavalry
    """
    CotType_a_f_G_U_H: _CotType.ValueType  # 62
    """
    a-f-G-U-H: Friendly ground unit headquarters
    """
    CotType_a_f_G_U_U_M_S_E: _CotType.ValueType  # 63
    """
    a-f-G-U-U-M-S-E: Friendly ground unit support medical surgical evacuation
    """
    CotType_a_f_G_U_S_M_C: _CotType.ValueType  # 64
    """
    a-f-G-U-S-M-C: Friendly ground unit support maintenance collection
    """
    CotType_a_f_G_E_S: _CotType.ValueType  # 65
    """Friendly ground equipment


    a-f-G-E-S: Friendly ground equipment sensor (generic)
    """
    CotType_a_f_G_E: _CotType.ValueType  # 66
    """
    a-f-G-E: Friendly ground equipment (generic)
    """
    CotType_a_f_G_E_V_C_U: _CotType.ValueType  # 67
    """
    a-f-G-E-V-C-U: Friendly ground equipment vehicle utility
    """
    CotType_a_f_G_E_V_C_ps: _CotType.ValueType  # 68
    """
    a-f-G-E-V-C-ps: Friendly ground equipment vehicle public safety
    """
    CotType_a_u_G_E_V: _CotType.ValueType  # 69
    """Unknown ground


    a-u-G-E-V: Unknown ground equipment vehicle
    """
    CotType_a_f_S_N_N_R: _CotType.ValueType  # 70
    """Sea


    a-f-S-N-N-R: Friendly sea surface non-naval rescue
    """
    CotType_a_f_F_B: _CotType.ValueType  # 71
    """Friendly force (non-domain-specific)


    a-f-F-B: Friendly force boundary
    """
    CotType_b_m_p_s_p_loc: _CotType.ValueType  # 72
    """Bits / data messages


    b-m-p-s-p-loc: Self-position location marker
    """
    CotType_b_i_v: _CotType.ValueType  # 73
    """
    b-i-v: Imagery/video
    """
    CotType_b_f_t_r: _CotType.ValueType  # 74
    """
    b-f-t-r: File transfer request
    """
    CotType_b_f_t_a: _CotType.ValueType  # 75
    """
    b-f-t-a: File transfer acknowledgment
    """
    CotType_u_d_f_m: _CotType.ValueType  # 76
    """--- Additional drawing / tactical graphics ---


    u-d-f-m: Freehand telestration / annotation. Anchor at event point,
    geometry carried via DrawnShape.vertices. May be truncated to
    MAX_VERTICES by the sender.
    """
    CotType_u_d_p: _CotType.ValueType  # 77
    """
    u-d-p: Closed polygon. Geometry carried via DrawnShape.vertices,
    implicitly closed (receiver duplicates first vertex as needed).
    """
    CotType_b_m_p_s_m: _CotType.ValueType  # 78
    """--- Additional markers ---


    b-m-p-s-m: Spot map marker (colored dot at a point of interest).
    """
    CotType_b_m_p_c: _CotType.ValueType  # 79
    """
    b-m-p-c: Checkpoint (intermediate route control point).
    """
    CotType_u_r_b_c_c: _CotType.ValueType  # 80
    """--- Ranging tools ---


    u-r-b-c-c: Ranging circle (range rings centered on the event point).
    """
    CotType_u_r_b_bullseye: _CotType.ValueType  # 81
    """
    u-r-b-bullseye: Bullseye with configurable range rings and bearing
    reference (magnetic / true / grid).
    """
    CotType_a_f_G_E_V_A: _CotType.ValueType  # 82
    """--- PLI self-reporting (1) ------------------------------------------


    a-f-G-E-V-A: Friendly armored vehicle, user-selectable self PLI.
    """
    CotType_a_n_A: _CotType.ValueType  # 83
    """--- 2525 quick-drop: basic affiliation gaps -------------------------


    a-n-A: Neutral aircraft (friendly/hostile/unknown already present).
    """
    CotType_a_u_G_U_C_F: _CotType.ValueType  # 84
    """--- 2525 quick-drop: artillery (4) ----------------------------------"""
    CotType_a_n_G_U_C_F: _CotType.ValueType  # 85
    CotType_a_h_G_U_C_F: _CotType.ValueType  # 86
    CotType_a_f_G_U_C_F: _CotType.ValueType  # 87
    CotType_a_u_G_I: _CotType.ValueType  # 88
    """--- 2525 quick-drop: building (4) -----------------------------------"""
    CotType_a_n_G_I: _CotType.ValueType  # 89
    CotType_a_h_G_I: _CotType.ValueType  # 90
    CotType_a_f_G_I: _CotType.ValueType  # 91
    CotType_a_u_G_E_X_M: _CotType.ValueType  # 92
    """--- 2525 quick-drop: mine (4) ---------------------------------------"""
    CotType_a_n_G_E_X_M: _CotType.ValueType  # 93
    CotType_a_h_G_E_X_M: _CotType.ValueType  # 94
    CotType_a_f_G_E_X_M: _CotType.ValueType  # 95
    CotType_a_u_S: _CotType.ValueType  # 96
    """--- 2525 quick-drop: ship (3; a-f-S already at 17) ------------------"""
    CotType_a_n_S: _CotType.ValueType  # 97
    CotType_a_h_S: _CotType.ValueType  # 98
    CotType_a_u_G_U_C_I_d: _CotType.ValueType  # 99
    """--- 2525 quick-drop: sniper (4) -------------------------------------"""
    CotType_a_n_G_U_C_I_d: _CotType.ValueType  # 100
    CotType_a_h_G_U_C_I_d: _CotType.ValueType  # 101
    CotType_a_f_G_U_C_I_d: _CotType.ValueType  # 102
    CotType_a_u_G_E_V_A_T: _CotType.ValueType  # 103
    """--- 2525 quick-drop: tank (4) ---------------------------------------"""
    CotType_a_n_G_E_V_A_T: _CotType.ValueType  # 104
    CotType_a_h_G_E_V_A_T: _CotType.ValueType  # 105
    CotType_a_f_G_E_V_A_T: _CotType.ValueType  # 106
    CotType_a_u_G_U_C_I: _CotType.ValueType  # 107
    """--- 2525 quick-drop: troops (3; a-f-G-U-C-I already at 2) -----------"""
    CotType_a_n_G_U_C_I: _CotType.ValueType  # 108
    CotType_a_h_G_U_C_I: _CotType.ValueType  # 109
    CotType_a_n_G_E_V: _CotType.ValueType  # 110
    """--- 2525 quick-drop: generic vehicle (3; a-u-G-E-V already at 69) ---"""
    CotType_a_h_G_E_V: _CotType.ValueType  # 111
    CotType_a_f_G_E_V: _CotType.ValueType  # 112
    CotType_b_m_p_w_GOTO: _CotType.ValueType  # 113
    """--- Mission-specific points (4) -------------------------------------


    b-m-p-w-GOTO: Go To / bloodhound navigation target.
    """
    CotType_b_m_p_c_ip: _CotType.ValueType  # 114
    """
    b-m-p-c-ip: Initial point (mission planning).
    """
    CotType_b_m_p_c_cp: _CotType.ValueType  # 115
    """
    b-m-p-c-cp: Contact point (mission planning).
    """
    CotType_b_m_p_s_p_op: _CotType.ValueType  # 116
    """
    b-m-p-s-p-op: Observation post.
    """
    CotType_u_d_v: _CotType.ValueType  # 117
    """--- Vehicle drawings (2) --------------------------------------------


    u-d-v: 2D vehicle outline drawn on the map.
    """
    CotType_u_d_v_m: _CotType.ValueType  # 118
    """
    u-d-v-m: 3D vehicle model reference.
    """
    CotType_u_d_c_e: _CotType.ValueType  # 119
    """--- Drawing shapes (1) ----------------------------------------------


    u-d-c-e: Non-circular ellipse (circle with distinct major/minor axes).
    """
    CotType_b_i_x_i: _CotType.ValueType  # 120
    """--- Image / media marker (1) ----------------------------------------


    b-i-x-i: Quick Pic geotagged image marker. The image itself does not
    ride on LoRa; this event references the image via iconset metadata.
    """
    CotType_b_t_f_d: _CotType.ValueType  # 121
    """--- GeoChat receipts (2) --------------------------------------------


    b-t-f-d: GeoChat delivered receipt. Carried on the existing `chat`
    payload_variant via GeoChat.receipt_for_uid + receipt_type.
    """
    CotType_b_t_f_r: _CotType.ValueType  # 122
    """
    b-t-f-r: GeoChat read receipt. Same wire slot as b-t-f-d.
    """
    CotType_b_a_o_c: _CotType.ValueType  # 123
    """--- Custom emergency (1) --------------------------------------------


    b-a-o-c: Custom / generic emergency beacon.
    """
    CotType_t_s: _CotType.ValueType  # 124
    """--- Tasking (1) -----------------------------------------------------


    t-s: Task / engage request. Structured payload carried via the new
    TaskRequest typed variant.
    """
    CotType_m_t_t: _CotType.ValueType  # 125
    """-- TAKTALK plugin shapes --
    CoT types unique to the TAKTALK ATAK plugin. Note `y-` has a literal
    trailing dash and no second atom — that's the wire format ATAK emits
    for TAKTALK room broadcasts. The CotType enum encodes the literal
    string verbatim (CotType_y -> "y-") so receivers reconstruct the
    original event type byte-for-byte without consulting cot_type_str.


    m-t-t: TAKTALK voice/text chat message. Payload carried via the
    TakTalkMessage typed variant (text, chatroom_id, lang, from_voice).
    """
    CotType_y: _CotType.ValueType  # 126
    """
    y-: TAKTALK room/membership broadcast. Payload carried via the
    TakTalkRoomData typed variant (sender_callsign, room_id, room_name,
    participants). The CoT type literally has a trailing dash and no
    second atom — not a typo.
    """

class CotType(_CotType, metaclass=_CotTypeEnumTypeWrapper):
    """
    Well-known CoT event types.
    When the type is known, use the enum value for efficient encoding.
    For unknown types, set cot_type_id to CotType_Other and populate cot_type_str.
    """

CotType_Other: CotType.ValueType  # 0
"""
Unknown or unmapped type, use cot_type_str
"""
CotType_a_f_G_U_C: CotType.ValueType  # 1
"""
a-f-G-U-C: Friendly ground unit combat
"""
CotType_a_f_G_U_C_I: CotType.ValueType  # 2
"""
a-f-G-U-C-I: Friendly ground unit combat infantry
"""
CotType_a_n_A_C_F: CotType.ValueType  # 3
"""
a-n-A-C-F: Neutral aircraft civilian fixed-wing
"""
CotType_a_n_A_C_H: CotType.ValueType  # 4
"""
a-n-A-C-H: Neutral aircraft civilian helicopter
"""
CotType_a_n_A_C: CotType.ValueType  # 5
"""
a-n-A-C: Neutral aircraft civilian
"""
CotType_a_f_A_M_H: CotType.ValueType  # 6
"""
a-f-A-M-H: Friendly aircraft military helicopter
"""
CotType_a_f_A_M: CotType.ValueType  # 7
"""
a-f-A-M: Friendly aircraft military
"""
CotType_a_f_A_M_F_F: CotType.ValueType  # 8
"""
a-f-A-M-F-F: Friendly aircraft military fixed-wing fighter
"""
CotType_a_f_A_M_H_A: CotType.ValueType  # 9
"""
a-f-A-M-H-A: Friendly aircraft military helicopter attack
"""
CotType_a_f_A_M_H_U_M: CotType.ValueType  # 10
"""
a-f-A-M-H-U-M: Friendly aircraft military helicopter utility medium
"""
CotType_a_h_A_M_F_F: CotType.ValueType  # 11
"""
a-h-A-M-F-F: Hostile aircraft military fixed-wing fighter
"""
CotType_a_h_A_M_H_A: CotType.ValueType  # 12
"""
a-h-A-M-H-A: Hostile aircraft military helicopter attack
"""
CotType_a_u_A_C: CotType.ValueType  # 13
"""
a-u-A-C: Unknown aircraft civilian
"""
CotType_t_x_d_d: CotType.ValueType  # 14
"""
t-x-d-d: Tasking delete/disconnect
"""
CotType_a_f_G_E_S_E: CotType.ValueType  # 15
"""
a-f-G-E-S-E: Friendly ground equipment sensor
"""
CotType_a_f_G_E_V_C: CotType.ValueType  # 16
"""
a-f-G-E-V-C: Friendly ground equipment vehicle
"""
CotType_a_f_S: CotType.ValueType  # 17
"""
a-f-S: Friendly sea
"""
CotType_a_f_A_M_F: CotType.ValueType  # 18
"""
a-f-A-M-F: Friendly aircraft military fixed-wing
"""
CotType_a_f_A_M_F_C_H: CotType.ValueType  # 19
"""
a-f-A-M-F-C-H: Friendly aircraft military fixed-wing cargo heavy
"""
CotType_a_f_A_M_F_U_L: CotType.ValueType  # 20
"""
a-f-A-M-F-U-L: Friendly aircraft military fixed-wing utility light
"""
CotType_a_f_A_M_F_L: CotType.ValueType  # 21
"""
a-f-A-M-F-L: Friendly aircraft military fixed-wing liaison
"""
CotType_a_f_A_M_F_P: CotType.ValueType  # 22
"""
a-f-A-M-F-P: Friendly aircraft military fixed-wing patrol
"""
CotType_a_f_A_C_H: CotType.ValueType  # 23
"""
a-f-A-C-H: Friendly aircraft civilian helicopter
"""
CotType_a_n_A_M_F_Q: CotType.ValueType  # 24
"""
a-n-A-M-F-Q: Neutral aircraft military fixed-wing drone
"""
CotType_b_t_f: CotType.ValueType  # 25
"""--- Chat / messaging ---


b-t-f: GeoChat message
"""
CotType_b_r_f_h_c: CotType.ValueType  # 26
"""--- CASEVAC / MEDEVAC ---


b-r-f-h-c: CASEVAC/MEDEVAC report
"""
CotType_b_a_o_pan: CotType.ValueType  # 27
"""--- Alerts ---


b-a-o-pan: Ring the bell / alert all
"""
CotType_b_a_o_opn: CotType.ValueType  # 28
"""
b-a-o-opn: Troops in contact
"""
CotType_b_a_o_can: CotType.ValueType  # 29
"""
b-a-o-can: Cancel alert
"""
CotType_b_a_o_tbl: CotType.ValueType  # 30
"""
b-a-o-tbl: 911 alert
"""
CotType_b_a_g: CotType.ValueType  # 31
"""
b-a-g: Geofence breach alert
"""
CotType_a_f_G: CotType.ValueType  # 32
"""--- Generic ground atoms (simplified affiliation types) ---


a-f-G: Friendly ground (generic)
"""
CotType_a_f_G_U: CotType.ValueType  # 33
"""
a-f-G-U: Friendly ground unit (generic)
"""
CotType_a_h_G: CotType.ValueType  # 34
"""
a-h-G: Hostile ground (generic)
"""
CotType_a_u_G: CotType.ValueType  # 35
"""
a-u-G: Unknown ground (generic)
"""
CotType_a_n_G: CotType.ValueType  # 36
"""
a-n-G: Neutral ground (generic)
"""
CotType_b_m_r: CotType.ValueType  # 37
"""--- Routes and waypoints ---


b-m-r: Route
"""
CotType_b_m_p_w: CotType.ValueType  # 38
"""
b-m-p-w: Route waypoint
"""
CotType_b_m_p_s_p_i: CotType.ValueType  # 39
"""
b-m-p-s-p-i: Self-position marker
"""
CotType_u_d_f: CotType.ValueType  # 40
"""--- Drawing / tactical graphics ---


u-d-f: Freeform shape (line/polygon)
"""
CotType_u_d_r: CotType.ValueType  # 41
"""
u-d-r: Rectangle
"""
CotType_u_d_c_c: CotType.ValueType  # 42
"""
u-d-c-c: Circle
"""
CotType_u_rb_a: CotType.ValueType  # 43
"""
u-rb-a: Range/bearing line
"""
CotType_a_h_A: CotType.ValueType  # 44
"""--- Additional hostile/unknown aircraft ---


a-h-A: Hostile aircraft (generic)
"""
CotType_a_u_A: CotType.ValueType  # 45
"""
a-u-A: Unknown aircraft (generic)
"""
CotType_a_f_A_M_H_Q: CotType.ValueType  # 46
"""
a-f-A-M-H-Q: Friendly aircraft military helicopter observation
"""
CotType_a_f_A_C_F: CotType.ValueType  # 47
"""Friendly aircraft civilian


a-f-A-C-F: Friendly aircraft civilian fixed-wing
"""
CotType_a_f_A_C: CotType.ValueType  # 48
"""
a-f-A-C: Friendly aircraft civilian (generic)
"""
CotType_a_f_A_C_L: CotType.ValueType  # 49
"""
a-f-A-C-L: Friendly aircraft civilian lighter-than-air
"""
CotType_a_f_A: CotType.ValueType  # 50
"""
a-f-A: Friendly aircraft (generic)
"""
CotType_a_f_A_M_H_C: CotType.ValueType  # 51
"""Friendly aircraft military helicopter variants


a-f-A-M-H-C: Friendly aircraft military helicopter cargo
"""
CotType_a_n_A_M_F_F: CotType.ValueType  # 52
"""Neutral aircraft military


a-n-A-M-F-F: Neutral aircraft military fixed-wing fighter
"""
CotType_a_u_A_C_F: CotType.ValueType  # 53
"""Unknown aircraft civilian


a-u-A-C-F: Unknown aircraft civilian fixed-wing
"""
CotType_a_f_G_U_C_F_T_A: CotType.ValueType  # 54
"""Friendly ground unit subtypes


a-f-G-U-C-F-T-A: Friendly ground unit combat forces theater aviation
"""
CotType_a_f_G_U_C_V_S: CotType.ValueType  # 55
"""
a-f-G-U-C-V-S: Friendly ground unit combat vehicle support
"""
CotType_a_f_G_U_C_R_X: CotType.ValueType  # 56
"""
a-f-G-U-C-R-X: Friendly ground unit combat reconnaissance exploitation
"""
CotType_a_f_G_U_C_I_Z: CotType.ValueType  # 57
"""
a-f-G-U-C-I-Z: Friendly ground unit combat infantry mechanized
"""
CotType_a_f_G_U_C_E_C_W: CotType.ValueType  # 58
"""
a-f-G-U-C-E-C-W: Friendly ground unit combat engineer construction wheeled
"""
CotType_a_f_G_U_C_I_L: CotType.ValueType  # 59
"""
a-f-G-U-C-I-L: Friendly ground unit combat infantry light
"""
CotType_a_f_G_U_C_R_O: CotType.ValueType  # 60
"""
a-f-G-U-C-R-O: Friendly ground unit combat reconnaissance other
"""
CotType_a_f_G_U_C_R_V: CotType.ValueType  # 61
"""
a-f-G-U-C-R-V: Friendly ground unit combat reconnaissance cavalry
"""
CotType_a_f_G_U_H: CotType.ValueType  # 62
"""
a-f-G-U-H: Friendly ground unit headquarters
"""
CotType_a_f_G_U_U_M_S_E: CotType.ValueType  # 63
"""
a-f-G-U-U-M-S-E: Friendly ground unit support medical surgical evacuation
"""
CotType_a_f_G_U_S_M_C: CotType.ValueType  # 64
"""
a-f-G-U-S-M-C: Friendly ground unit support maintenance collection
"""
CotType_a_f_G_E_S: CotType.ValueType  # 65
"""Friendly ground equipment


a-f-G-E-S: Friendly ground equipment sensor (generic)
"""
CotType_a_f_G_E: CotType.ValueType  # 66
"""
a-f-G-E: Friendly ground equipment (generic)
"""
CotType_a_f_G_E_V_C_U: CotType.ValueType  # 67
"""
a-f-G-E-V-C-U: Friendly ground equipment vehicle utility
"""
CotType_a_f_G_E_V_C_ps: CotType.ValueType  # 68
"""
a-f-G-E-V-C-ps: Friendly ground equipment vehicle public safety
"""
CotType_a_u_G_E_V: CotType.ValueType  # 69
"""Unknown ground


a-u-G-E-V: Unknown ground equipment vehicle
"""
CotType_a_f_S_N_N_R: CotType.ValueType  # 70
"""Sea


a-f-S-N-N-R: Friendly sea surface non-naval rescue
"""
CotType_a_f_F_B: CotType.ValueType  # 71
"""Friendly force (non-domain-specific)


a-f-F-B: Friendly force boundary
"""
CotType_b_m_p_s_p_loc: CotType.ValueType  # 72
"""Bits / data messages


b-m-p-s-p-loc: Self-position location marker
"""
CotType_b_i_v: CotType.ValueType  # 73
"""
b-i-v: Imagery/video
"""
CotType_b_f_t_r: CotType.ValueType  # 74
"""
b-f-t-r: File transfer request
"""
CotType_b_f_t_a: CotType.ValueType  # 75
"""
b-f-t-a: File transfer acknowledgment
"""
CotType_u_d_f_m: CotType.ValueType  # 76
"""--- Additional drawing / tactical graphics ---


u-d-f-m: Freehand telestration / annotation. Anchor at event point,
geometry carried via DrawnShape.vertices. May be truncated to
MAX_VERTICES by the sender.
"""
CotType_u_d_p: CotType.ValueType  # 77
"""
u-d-p: Closed polygon. Geometry carried via DrawnShape.vertices,
implicitly closed (receiver duplicates first vertex as needed).
"""
CotType_b_m_p_s_m: CotType.ValueType  # 78
"""--- Additional markers ---


b-m-p-s-m: Spot map marker (colored dot at a point of interest).
"""
CotType_b_m_p_c: CotType.ValueType  # 79
"""
b-m-p-c: Checkpoint (intermediate route control point).
"""
CotType_u_r_b_c_c: CotType.ValueType  # 80
"""--- Ranging tools ---


u-r-b-c-c: Ranging circle (range rings centered on the event point).
"""
CotType_u_r_b_bullseye: CotType.ValueType  # 81
"""
u-r-b-bullseye: Bullseye with configurable range rings and bearing
reference (magnetic / true / grid).
"""
CotType_a_f_G_E_V_A: CotType.ValueType  # 82
"""--- PLI self-reporting (1) ------------------------------------------


a-f-G-E-V-A: Friendly armored vehicle, user-selectable self PLI.
"""
CotType_a_n_A: CotType.ValueType  # 83
"""--- 2525 quick-drop: basic affiliation gaps -------------------------


a-n-A: Neutral aircraft (friendly/hostile/unknown already present).
"""
CotType_a_u_G_U_C_F: CotType.ValueType  # 84
"""--- 2525 quick-drop: artillery (4) ----------------------------------"""
CotType_a_n_G_U_C_F: CotType.ValueType  # 85
CotType_a_h_G_U_C_F: CotType.ValueType  # 86
CotType_a_f_G_U_C_F: CotType.ValueType  # 87
CotType_a_u_G_I: CotType.ValueType  # 88
"""--- 2525 quick-drop: building (4) -----------------------------------"""
CotType_a_n_G_I: CotType.ValueType  # 89
CotType_a_h_G_I: CotType.ValueType  # 90
CotType_a_f_G_I: CotType.ValueType  # 91
CotType_a_u_G_E_X_M: CotType.ValueType  # 92
"""--- 2525 quick-drop: mine (4) ---------------------------------------"""
CotType_a_n_G_E_X_M: CotType.ValueType  # 93
CotType_a_h_G_E_X_M: CotType.ValueType  # 94
CotType_a_f_G_E_X_M: CotType.ValueType  # 95
CotType_a_u_S: CotType.ValueType  # 96
"""--- 2525 quick-drop: ship (3; a-f-S already at 17) ------------------"""
CotType_a_n_S: CotType.ValueType  # 97
CotType_a_h_S: CotType.ValueType  # 98
CotType_a_u_G_U_C_I_d: CotType.ValueType  # 99
"""--- 2525 quick-drop: sniper (4) -------------------------------------"""
CotType_a_n_G_U_C_I_d: CotType.ValueType  # 100
CotType_a_h_G_U_C_I_d: CotType.ValueType  # 101
CotType_a_f_G_U_C_I_d: CotType.ValueType  # 102
CotType_a_u_G_E_V_A_T: CotType.ValueType  # 103
"""--- 2525 quick-drop: tank (4) ---------------------------------------"""
CotType_a_n_G_E_V_A_T: CotType.ValueType  # 104
CotType_a_h_G_E_V_A_T: CotType.ValueType  # 105
CotType_a_f_G_E_V_A_T: CotType.ValueType  # 106
CotType_a_u_G_U_C_I: CotType.ValueType  # 107
"""--- 2525 quick-drop: troops (3; a-f-G-U-C-I already at 2) -----------"""
CotType_a_n_G_U_C_I: CotType.ValueType  # 108
CotType_a_h_G_U_C_I: CotType.ValueType  # 109
CotType_a_n_G_E_V: CotType.ValueType  # 110
"""--- 2525 quick-drop: generic vehicle (3; a-u-G-E-V already at 69) ---"""
CotType_a_h_G_E_V: CotType.ValueType  # 111
CotType_a_f_G_E_V: CotType.ValueType  # 112
CotType_b_m_p_w_GOTO: CotType.ValueType  # 113
"""--- Mission-specific points (4) -------------------------------------


b-m-p-w-GOTO: Go To / bloodhound navigation target.
"""
CotType_b_m_p_c_ip: CotType.ValueType  # 114
"""
b-m-p-c-ip: Initial point (mission planning).
"""
CotType_b_m_p_c_cp: CotType.ValueType  # 115
"""
b-m-p-c-cp: Contact point (mission planning).
"""
CotType_b_m_p_s_p_op: CotType.ValueType  # 116
"""
b-m-p-s-p-op: Observation post.
"""
CotType_u_d_v: CotType.ValueType  # 117
"""--- Vehicle drawings (2) --------------------------------------------


u-d-v: 2D vehicle outline drawn on the map.
"""
CotType_u_d_v_m: CotType.ValueType  # 118
"""
u-d-v-m: 3D vehicle model reference.
"""
CotType_u_d_c_e: CotType.ValueType  # 119
"""--- Drawing shapes (1) ----------------------------------------------


u-d-c-e: Non-circular ellipse (circle with distinct major/minor axes).
"""
CotType_b_i_x_i: CotType.ValueType  # 120
"""--- Image / media marker (1) ----------------------------------------


b-i-x-i: Quick Pic geotagged image marker. The image itself does not
ride on LoRa; this event references the image via iconset metadata.
"""
CotType_b_t_f_d: CotType.ValueType  # 121
"""--- GeoChat receipts (2) --------------------------------------------


b-t-f-d: GeoChat delivered receipt. Carried on the existing `chat`
payload_variant via GeoChat.receipt_for_uid + receipt_type.
"""
CotType_b_t_f_r: CotType.ValueType  # 122
"""
b-t-f-r: GeoChat read receipt. Same wire slot as b-t-f-d.
"""
CotType_b_a_o_c: CotType.ValueType  # 123
"""--- Custom emergency (1) --------------------------------------------


b-a-o-c: Custom / generic emergency beacon.
"""
CotType_t_s: CotType.ValueType  # 124
"""--- Tasking (1) -----------------------------------------------------


t-s: Task / engage request. Structured payload carried via the new
TaskRequest typed variant.
"""
CotType_m_t_t: CotType.ValueType  # 125
"""-- TAKTALK plugin shapes --
CoT types unique to the TAKTALK ATAK plugin. Note `y-` has a literal
trailing dash and no second atom — that's the wire format ATAK emits
for TAKTALK room broadcasts. The CotType enum encodes the literal
string verbatim (CotType_y -> "y-") so receivers reconstruct the
original event type byte-for-byte without consulting cot_type_str.


m-t-t: TAKTALK voice/text chat message. Payload carried via the
TakTalkMessage typed variant (text, chatroom_id, lang, from_voice).
"""
CotType_y: CotType.ValueType  # 126
"""
y-: TAKTALK room/membership broadcast. Payload carried via the
TakTalkRoomData typed variant (sender_callsign, room_id, room_name,
participants). The CoT type literally has a trailing dash and no
second atom — not a typo.
"""
global___CotType = CotType

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

class _GeoPointSourceEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_GeoPointSource.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    GeoPointSource_Unspecified: _GeoPointSource.ValueType  # 0
    """
    Unspecified
    """
    GeoPointSource_GPS: _GeoPointSource.ValueType  # 1
    """
    GPS derived
    """
    GeoPointSource_USER: _GeoPointSource.ValueType  # 2
    """
    User entered
    """
    GeoPointSource_NETWORK: _GeoPointSource.ValueType  # 3
    """
    Network/external
    """

class GeoPointSource(_GeoPointSource, metaclass=_GeoPointSourceEnumTypeWrapper):
    """
    Geopoint and altitude source
    """

GeoPointSource_Unspecified: GeoPointSource.ValueType  # 0
"""
Unspecified
"""
GeoPointSource_GPS: GeoPointSource.ValueType  # 1
"""
GPS derived
"""
GeoPointSource_USER: GeoPointSource.ValueType  # 2
"""
User entered
"""
GeoPointSource_NETWORK: GeoPointSource.ValueType  # 3
"""
Network/external
"""
global___GeoPointSource = GeoPointSource

@typing.final
class TAKPacket(google.protobuf.message.Message):
    """
    Packets for the official ATAK Plugin
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    IS_COMPRESSED_FIELD_NUMBER: builtins.int
    CONTACT_FIELD_NUMBER: builtins.int
    GROUP_FIELD_NUMBER: builtins.int
    STATUS_FIELD_NUMBER: builtins.int
    PLI_FIELD_NUMBER: builtins.int
    CHAT_FIELD_NUMBER: builtins.int
    DETAIL_FIELD_NUMBER: builtins.int
    is_compressed: builtins.bool
    """
    Are the payloads strings compressed for LoRA transport?
    """
    detail: builtins.bytes
    """
    Generic CoT detail XML
    May be compressed / truncated by the sender (EUD)
    """
    @property
    def contact(self) -> global___Contact:
        """
        The contact / callsign for ATAK user
        """

    @property
    def group(self) -> global___Group:
        """
        The group for ATAK user
        """

    @property
    def status(self) -> global___Status:
        """
        The status of the ATAK EUD
        """

    @property
    def pli(self) -> global___PLI:
        """
        TAK position report
        """

    @property
    def chat(self) -> global___GeoChat:
        """
        ATAK GeoChat message
        """

    def __init__(
        self,
        *,
        is_compressed: builtins.bool = ...,
        contact: global___Contact | None = ...,
        group: global___Group | None = ...,
        status: global___Status | None = ...,
        pli: global___PLI | None = ...,
        chat: global___GeoChat | None = ...,
        detail: builtins.bytes = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["chat", b"chat", "contact", b"contact", "detail", b"detail", "group", b"group", "payload_variant", b"payload_variant", "pli", b"pli", "status", b"status"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["chat", b"chat", "contact", b"contact", "detail", b"detail", "group", b"group", "is_compressed", b"is_compressed", "payload_variant", b"payload_variant", "pli", b"pli", "status", b"status"]) -> None: ...
    def WhichOneof(self, oneof_group: typing.Literal["payload_variant", b"payload_variant"]) -> typing.Literal["pli", "chat", "detail"] | None: ...

global___TAKPacket = TAKPacket

@typing.final
class GeoChat(google.protobuf.message.Message):
    """
    ATAK GeoChat message
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

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

    class _ReceiptTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[GeoChat._ReceiptType.ValueType], builtins.type):
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
        ReceiptType_None: GeoChat._ReceiptType.ValueType  # 0
        """normal chat message"""
        ReceiptType_Delivered: GeoChat._ReceiptType.ValueType  # 1
        """b-t-f-d delivered receipt"""
        ReceiptType_Read: GeoChat._ReceiptType.ValueType  # 2
        """b-t-f-r read receipt"""

    class ReceiptType(_ReceiptType, metaclass=_ReceiptTypeEnumTypeWrapper):
        """
        Receipt discriminator. Set alongside cot_type_id = b-t-f-d (delivered)
        or b-t-f-r (read). ReceiptType_None is the default for a normal chat
        message (cot_type_id = b-t-f).

        Receivers can detect a receipt by checking receipt_type != ReceiptType_None
        without re-parsing the envelope cot_type_id.
        """

    ReceiptType_None: GeoChat.ReceiptType.ValueType  # 0
    """normal chat message"""
    ReceiptType_Delivered: GeoChat.ReceiptType.ValueType  # 1
    """b-t-f-d delivered receipt"""
    ReceiptType_Read: GeoChat.ReceiptType.ValueType  # 2
    """b-t-f-r read receipt"""

    MESSAGE_FIELD_NUMBER: builtins.int
    TO_FIELD_NUMBER: builtins.int
    TO_CALLSIGN_FIELD_NUMBER: builtins.int
    RECEIPT_FOR_UID_FIELD_NUMBER: builtins.int
    RECEIPT_TYPE_FIELD_NUMBER: builtins.int
    LANG_FIELD_NUMBER: builtins.int
    ROOM_ID_FIELD_NUMBER: builtins.int
    VOICE_PROFILE_ID_FIELD_NUMBER: builtins.int
    message: builtins.str
    """
    The text message. Empty for receipts.
    """
    to: builtins.str
    """
    Uid recipient of the message
    """
    to_callsign: builtins.str
    """
    Callsign of the recipient for the message
    """
    receipt_for_uid: builtins.str
    """
    UID of the chat message this event is acknowledging. Empty for a
    normal chat message; set for delivered / read receipts. Paired with
    receipt_type so receivers can match the ack back to the original
    outbound GeoChat by its event uid.
    """
    receipt_type: global___GeoChat.ReceiptType.ValueType
    """
    Receipt kind discriminator. See ReceiptType doc. Default ReceiptType_None
    means this is a regular chat message, not a receipt.
    """
    lang: builtins.str
    """
    --- TAKTALK-flavored b-t-f extensions ---

    Set when the ATAK TAKTALK plugin originates the chat, so the message
    carries the room/language metadata TAKTALK uses to thread its UI.
    These fields are absent / empty for non-TAKTALK CoT chat, so the wire
    cost is paid only when TAKTALK is actually involved.

    Wire shape in source XML (inside <event type="b-t-f">/<detail>):
      <Ea>English</Ea>                          - lang
      <roomId>UUID</roomId>                     - room_id
      <voice_profile_id>X</voice_profile_id>    - voice_profile_id
      <voice_profile_id/>                       - empty marker; encoded as
                                                  present-but-empty string


    BCP-47-ish language tag or human-readable name (e.g. "en", "English")
    that the originator's TAKTALK plugin recorded for the message.
    """
    room_id: builtins.str
    """
    TAKTALK chatroom UUID (e.g. "30b2755c-c547-44ef-a0cc-cdbd8a15616f") that
    the receiver's TAKTALK plugin uses to thread the message under the
    right room. Resolved to a friendly name via TakTalkRoomData broadcasts.
    """
    voice_profile_id: builtins.str
    """
    TAKTALK voice profile pointer. Often empty in practice (the empty
    marker `<voice_profile_id/>` still signals TAKTALK origination), so
    receivers should treat empty-but-present as the equivalent of the
    marker rather than a missing field.
    """
    def __init__(
        self,
        *,
        message: builtins.str = ...,
        to: builtins.str | None = ...,
        to_callsign: builtins.str | None = ...,
        receipt_for_uid: builtins.str = ...,
        receipt_type: global___GeoChat.ReceiptType.ValueType = ...,
        lang: builtins.str | None = ...,
        room_id: builtins.str | None = ...,
        voice_profile_id: builtins.str | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["_lang", b"_lang", "_room_id", b"_room_id", "_to", b"_to", "_to_callsign", b"_to_callsign", "_voice_profile_id", b"_voice_profile_id", "lang", b"lang", "room_id", b"room_id", "to", b"to", "to_callsign", b"to_callsign", "voice_profile_id", b"voice_profile_id"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["_lang", b"_lang", "_room_id", b"_room_id", "_to", b"_to", "_to_callsign", b"_to_callsign", "_voice_profile_id", b"_voice_profile_id", "lang", b"lang", "message", b"message", "receipt_for_uid", b"receipt_for_uid", "receipt_type", b"receipt_type", "room_id", b"room_id", "to", b"to", "to_callsign", b"to_callsign", "voice_profile_id", b"voice_profile_id"]) -> None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_lang", b"_lang"]) -> typing.Literal["lang"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_room_id", b"_room_id"]) -> typing.Literal["room_id"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_to", b"_to"]) -> typing.Literal["to"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_to_callsign", b"_to_callsign"]) -> typing.Literal["to_callsign"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_voice_profile_id", b"_voice_profile_id"]) -> typing.Literal["voice_profile_id"] | None: ...

global___GeoChat = GeoChat

@typing.final
class Group(google.protobuf.message.Message):
    """
    ATAK Group
    <__group role='Team Member' name='Cyan'/>
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ROLE_FIELD_NUMBER: builtins.int
    TEAM_FIELD_NUMBER: builtins.int
    role: global___MemberRole.ValueType
    """
    Role of the group member
    """
    team: global___Team.ValueType
    """
    Team (color)
    Default Cyan
    """
    def __init__(
        self,
        *,
        role: global___MemberRole.ValueType = ...,
        team: global___Team.ValueType = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["role", b"role", "team", b"team"]) -> None: ...

global___Group = Group

@typing.final
class Status(google.protobuf.message.Message):
    """
    ATAK EUD Status
    <status battery='100' />
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    BATTERY_FIELD_NUMBER: builtins.int
    battery: builtins.int
    """
    Battery level
    """
    def __init__(
        self,
        *,
        battery: builtins.int = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["battery", b"battery"]) -> None: ...

global___Status = Status

@typing.final
class Contact(google.protobuf.message.Message):
    """
    ATAK Contact
    <contact endpoint='0.0.0.0:4242:tcp' phone='+12345678' callsign='FALKE'/>
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    CALLSIGN_FIELD_NUMBER: builtins.int
    DEVICE_CALLSIGN_FIELD_NUMBER: builtins.int
    callsign: builtins.str
    """
    Callsign
    """
    device_callsign: builtins.str
    """
    Device callsign

    IP address of endpoint in integer form (0.0.0.0 default)
    """
    def __init__(
        self,
        *,
        callsign: builtins.str = ...,
        device_callsign: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["callsign", b"callsign", "device_callsign", b"device_callsign"]) -> None: ...

global___Contact = Contact

@typing.final
class PLI(google.protobuf.message.Message):
    """
    Position Location Information from ATAK
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    LATITUDE_I_FIELD_NUMBER: builtins.int
    LONGITUDE_I_FIELD_NUMBER: builtins.int
    ALTITUDE_FIELD_NUMBER: builtins.int
    SPEED_FIELD_NUMBER: builtins.int
    COURSE_FIELD_NUMBER: builtins.int
    latitude_i: builtins.int
    """
    The new preferred location encoding, multiply by 1e-7 to get degrees
    in floating point
    """
    longitude_i: builtins.int
    """
    The new preferred location encoding, multiply by 1e-7 to get degrees
    in floating point
    """
    altitude: builtins.int
    """
    Altitude (ATAK prefers HAE)
    """
    speed: builtins.int
    """
    Speed
    """
    course: builtins.int
    """
    Course in degrees
    """
    def __init__(
        self,
        *,
        latitude_i: builtins.int = ...,
        longitude_i: builtins.int = ...,
        altitude: builtins.int = ...,
        speed: builtins.int = ...,
        course: builtins.int = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["altitude", b"altitude", "course", b"course", "latitude_i", b"latitude_i", "longitude_i", b"longitude_i", "speed", b"speed"]) -> None: ...

global___PLI = PLI

@typing.final
class AircraftTrack(google.protobuf.message.Message):
    """
    Aircraft track information from ADS-B or military air tracking.
    Covers the majority of observed real-world CoT traffic.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ICAO_FIELD_NUMBER: builtins.int
    REGISTRATION_FIELD_NUMBER: builtins.int
    FLIGHT_FIELD_NUMBER: builtins.int
    AIRCRAFT_TYPE_FIELD_NUMBER: builtins.int
    SQUAWK_FIELD_NUMBER: builtins.int
    CATEGORY_FIELD_NUMBER: builtins.int
    RSSI_X10_FIELD_NUMBER: builtins.int
    GPS_FIELD_NUMBER: builtins.int
    COT_HOST_ID_FIELD_NUMBER: builtins.int
    icao: builtins.str
    """
    ICAO hex identifier (e.g. "AD237C")
    """
    registration: builtins.str
    """
    Aircraft registration (e.g. "N946AK")
    """
    flight: builtins.str
    """
    Flight number/callsign (e.g. "ASA864")
    """
    aircraft_type: builtins.str
    """
    ICAO aircraft type designator (e.g. "B39M")
    """
    squawk: builtins.int
    """
    Transponder squawk code (0-7777 octal)
    """
    category: builtins.str
    """
    ADS-B emitter category (e.g. "A3")
    """
    rssi_x10: builtins.int
    """
    Received signal strength * 10 (e.g. -194 for -19.4 dBm)
    """
    gps: builtins.bool
    """
    Whether receiver has GPS fix
    """
    cot_host_id: builtins.str
    """
    CoT host ID for source attribution
    """
    def __init__(
        self,
        *,
        icao: builtins.str = ...,
        registration: builtins.str = ...,
        flight: builtins.str = ...,
        aircraft_type: builtins.str = ...,
        squawk: builtins.int = ...,
        category: builtins.str = ...,
        rssi_x10: builtins.int = ...,
        gps: builtins.bool = ...,
        cot_host_id: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["aircraft_type", b"aircraft_type", "category", b"category", "cot_host_id", b"cot_host_id", "flight", b"flight", "gps", b"gps", "icao", b"icao", "registration", b"registration", "rssi_x10", b"rssi_x10", "squawk", b"squawk"]) -> None: ...

global___AircraftTrack = AircraftTrack

@typing.final
class CotGeoPoint(google.protobuf.message.Message):
    """
    Compact geographic vertex used by repeated vertex lists in TAK geometry
    payloads. Named with a `Cot` prefix to avoid a namespace collision with
    `meshtastic.GeoPoint` in `device_ui.proto`, which is an unrelated zoom/
    latitude/longitude type used by the on-device map UI.

    Encoded as a signed DELTA from TAKPacketV2.latitude_i / longitude_i (the
    enclosing event's anchor point). The absolute coordinate is recovered by
    the receiver as `event.latitude_i + vertex.lat_delta_i` (and likewise for
    longitude).

    Why deltas: a 32-vertex telestration with vertices clustered within a few
    hundred meters of the anchor has per-vertex deltas in the ±10^4 range.
    Under sint32+zigzag those encode as 2 bytes each (tag+varint), versus the
    4 bytes that sfixed32 would always require. At 32 vertices that is ~128
    bytes of savings — the difference between fitting under the LoRa MTU or
    not. Absolute coordinates (values ~10^9) would cost sint32 varint 5 bytes
    per field, which is why TAKPacketV2's top-level latitude_i / longitude_i
    stay sfixed32 — only small values win with sint32.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    LAT_DELTA_I_FIELD_NUMBER: builtins.int
    LON_DELTA_I_FIELD_NUMBER: builtins.int
    lat_delta_i: builtins.int
    """
    Latitude delta from TAKPacketV2.latitude_i, in 1e-7 degree units.
    Add to the enclosing event's latitude_i to recover the absolute latitude.
    """
    lon_delta_i: builtins.int
    """
    Longitude delta from TAKPacketV2.longitude_i, in 1e-7 degree units.
    """
    def __init__(
        self,
        *,
        lat_delta_i: builtins.int = ...,
        lon_delta_i: builtins.int = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["lat_delta_i", b"lat_delta_i", "lon_delta_i", b"lon_delta_i"]) -> None: ...

global___CotGeoPoint = CotGeoPoint

@typing.final
class DrawnShape(google.protobuf.message.Message):
    """
    User-drawn tactical graphic: circle, rectangle, polygon, polyline, freehand
    telestration, ranging circle, or bullseye.

    Covers CoT types u-d-c-c, u-d-r, u-d-f, u-d-f-m, u-d-p, u-r-b-c-c,
    u-r-b-bullseye. The shape's anchor position is carried on
    TAKPacketV2.latitude_i/longitude_i; polyline/polygon vertices are in the
    `vertices` repeated field as `CotGeoPoint` deltas from that anchor.

    Colors use the Team enum as a 14-color palette (see color encoding below)
    with a fixed32 exact-ARGB fallback for custom user-picked colors that
    don't map to a palette entry.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

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

    class _KindEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[DrawnShape._Kind.ValueType], builtins.type):
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
        Kind_Unspecified: DrawnShape._Kind.ValueType  # 0
        """
        Unspecified (do not use on the wire)
        """
        Kind_Circle: DrawnShape._Kind.ValueType  # 1
        """
        u-d-c-c: User-drawn circle (uses major/minor/angle, anchor = event point)
        """
        Kind_Rectangle: DrawnShape._Kind.ValueType  # 2
        """
        u-d-r: User-drawn rectangle (uses vertices = 4 corners)
        """
        Kind_Freeform: DrawnShape._Kind.ValueType  # 3
        """
        u-d-f: User-drawn polyline (uses vertices, not closed)
        """
        Kind_Telestration: DrawnShape._Kind.ValueType  # 4
        """
        u-d-f-m: Freehand telestration / annotation (uses vertices, may be truncated)
        """
        Kind_Polygon: DrawnShape._Kind.ValueType  # 5
        """
        u-d-p: Closed polygon (uses vertices, implicitly closed)
        """
        Kind_RangingCircle: DrawnShape._Kind.ValueType  # 6
        """
        u-r-b-c-c: Ranging circle (major/minor/angle, stroke + optional fill)
        """
        Kind_Bullseye: DrawnShape._Kind.ValueType  # 7
        """
        u-r-b-bullseye: Bullseye ring with range rings and bearing reference
        """
        Kind_Ellipse: DrawnShape._Kind.ValueType  # 8
        """
        u-d-c-e: Ellipse with distinct major/minor axes (same storage as
        Kind_Circle — uses major_cm/minor_cm/angle_deg — but receivers
        render it as a non-circular ellipse rather than a round circle).
        """
        Kind_Vehicle2D: DrawnShape._Kind.ValueType  # 9
        """
        u-d-v: 2D vehicle outline drawn on the map. Vertices carry the
        outline polygon; receivers draw it as a filled polygon.
        """
        Kind_Vehicle3D: DrawnShape._Kind.ValueType  # 10
        """
        u-d-v-m: 3D vehicle model reference. Same vertex polygon as
        Kind_Vehicle2D; receivers that support 3D rendering extrude it.
        """

    class Kind(_Kind, metaclass=_KindEnumTypeWrapper):
        """
        Shape kind discriminator. Drives receiver rendering and also controls
        which optional fields below are meaningful.
        """

    Kind_Unspecified: DrawnShape.Kind.ValueType  # 0
    """
    Unspecified (do not use on the wire)
    """
    Kind_Circle: DrawnShape.Kind.ValueType  # 1
    """
    u-d-c-c: User-drawn circle (uses major/minor/angle, anchor = event point)
    """
    Kind_Rectangle: DrawnShape.Kind.ValueType  # 2
    """
    u-d-r: User-drawn rectangle (uses vertices = 4 corners)
    """
    Kind_Freeform: DrawnShape.Kind.ValueType  # 3
    """
    u-d-f: User-drawn polyline (uses vertices, not closed)
    """
    Kind_Telestration: DrawnShape.Kind.ValueType  # 4
    """
    u-d-f-m: Freehand telestration / annotation (uses vertices, may be truncated)
    """
    Kind_Polygon: DrawnShape.Kind.ValueType  # 5
    """
    u-d-p: Closed polygon (uses vertices, implicitly closed)
    """
    Kind_RangingCircle: DrawnShape.Kind.ValueType  # 6
    """
    u-r-b-c-c: Ranging circle (major/minor/angle, stroke + optional fill)
    """
    Kind_Bullseye: DrawnShape.Kind.ValueType  # 7
    """
    u-r-b-bullseye: Bullseye ring with range rings and bearing reference
    """
    Kind_Ellipse: DrawnShape.Kind.ValueType  # 8
    """
    u-d-c-e: Ellipse with distinct major/minor axes (same storage as
    Kind_Circle — uses major_cm/minor_cm/angle_deg — but receivers
    render it as a non-circular ellipse rather than a round circle).
    """
    Kind_Vehicle2D: DrawnShape.Kind.ValueType  # 9
    """
    u-d-v: 2D vehicle outline drawn on the map. Vertices carry the
    outline polygon; receivers draw it as a filled polygon.
    """
    Kind_Vehicle3D: DrawnShape.Kind.ValueType  # 10
    """
    u-d-v-m: 3D vehicle model reference. Same vertex polygon as
    Kind_Vehicle2D; receivers that support 3D rendering extrude it.
    """

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

    class _StyleModeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[DrawnShape._StyleMode.ValueType], builtins.type):
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
        StyleMode_Unspecified: DrawnShape._StyleMode.ValueType  # 0
        """
        Unspecified — receiver infers from which color fields are non-zero.
        """
        StyleMode_StrokeOnly: DrawnShape._StyleMode.ValueType  # 1
        """
        Stroke only. No <fillColor> in the source XML. Used for polylines,
        ranging lines, bullseye rings.
        """
        StyleMode_FillOnly: DrawnShape._StyleMode.ValueType  # 2
        """
        Fill only. No <strokeColor> in the source XML. Rare but valid in
        ATAK (solid region with no outline).
        """
        StyleMode_StrokeAndFill: DrawnShape._StyleMode.ValueType  # 3
        """
        Both stroke and fill present. Closed shapes: circle, rectangle,
        polygon, ranging circle.
        """

    class StyleMode(_StyleMode, metaclass=_StyleModeEnumTypeWrapper):
        """
        Explicit stroke/fill/both discriminator.

        ATAK's source XML distinguishes "stroke-only polyline" from "closed shape
        with both stroke and fill" by the presence of the <fillColor> element.
        Both states can hash to all-zero color fields, so we carry the signal
        explicitly. Parser sets this from (sawStrokeColor, sawFillColor) at the
        end of parse; builder uses it to decide which of <strokeColor> /
        <fillColor> to emit in the reconstructed XML.
        """

    StyleMode_Unspecified: DrawnShape.StyleMode.ValueType  # 0
    """
    Unspecified — receiver infers from which color fields are non-zero.
    """
    StyleMode_StrokeOnly: DrawnShape.StyleMode.ValueType  # 1
    """
    Stroke only. No <fillColor> in the source XML. Used for polylines,
    ranging lines, bullseye rings.
    """
    StyleMode_FillOnly: DrawnShape.StyleMode.ValueType  # 2
    """
    Fill only. No <strokeColor> in the source XML. Rare but valid in
    ATAK (solid region with no outline).
    """
    StyleMode_StrokeAndFill: DrawnShape.StyleMode.ValueType  # 3
    """
    Both stroke and fill present. Closed shapes: circle, rectangle,
    polygon, ranging circle.
    """

    KIND_FIELD_NUMBER: builtins.int
    STYLE_FIELD_NUMBER: builtins.int
    MAJOR_CM_FIELD_NUMBER: builtins.int
    MINOR_CM_FIELD_NUMBER: builtins.int
    ANGLE_DEG_FIELD_NUMBER: builtins.int
    STROKE_COLOR_FIELD_NUMBER: builtins.int
    STROKE_ARGB_FIELD_NUMBER: builtins.int
    STROKE_WEIGHT_X10_FIELD_NUMBER: builtins.int
    FILL_COLOR_FIELD_NUMBER: builtins.int
    FILL_ARGB_FIELD_NUMBER: builtins.int
    LABELS_ON_FIELD_NUMBER: builtins.int
    VERTEX_LAT_DELTAS_FIELD_NUMBER: builtins.int
    VERTEX_LON_DELTAS_FIELD_NUMBER: builtins.int
    TRUNCATED_FIELD_NUMBER: builtins.int
    BULLSEYE_DISTANCE_DM_FIELD_NUMBER: builtins.int
    BULLSEYE_BEARING_REF_FIELD_NUMBER: builtins.int
    BULLSEYE_FLAGS_FIELD_NUMBER: builtins.int
    BULLSEYE_UID_REF_FIELD_NUMBER: builtins.int
    kind: global___DrawnShape.Kind.ValueType
    """
    Shape kind (circle, rectangle, freeform, etc.)
    """
    style: global___DrawnShape.StyleMode.ValueType
    """
    Explicit stroke/fill/both discriminator. See StyleMode doc.
    """
    major_cm: builtins.int
    """
    Ellipse major radius in centimeters. 0 for non-ellipse kinds.
    """
    minor_cm: builtins.int
    """
    Ellipse minor radius in centimeters. 0 for non-ellipse kinds.
    """
    angle_deg: builtins.int
    """
    Ellipse rotation angle in degrees. Valid values are 0..360 inclusive;
    0 and 360 are equivalent rotations. In proto3, an unset uint32 reads
    as 0, so senders should emit 0 when the angle is unspecified.
    """
    stroke_color: global___Team.ValueType
    """
    Stroke color as a named palette entry from the Team enum. If
    Unspecifed_Color, the exact ARGB is carried in stroke_argb.
    Valid only when style is StrokeOnly or StrokeAndFill.
    """
    stroke_argb: builtins.int
    """
    Stroke color as an exact 32-bit ARGB bit pattern. Always populated
    on the wire; readers MUST use this value when stroke_color ==
    Unspecifed_Color and MAY use it to recover the exact original bytes
    even when a palette entry is set.
    """
    stroke_weight_x10: builtins.int
    """
    Stroke weight in tenths of a unit (e.g. 30 = 3.0). Typical ATAK
    range 10..60.
    """
    fill_color: global___Team.ValueType
    """
    Fill color as a named palette entry. See stroke_color docs.
    Valid only when style is FillOnly or StrokeAndFill.
    """
    fill_argb: builtins.int
    """
    Fill color exact ARGB fallback. See stroke_argb docs.
    """
    labels_on: builtins.bool
    """
    Whether labels are rendered on this shape.
    """
    truncated: builtins.bool
    """
    True if the sender truncated the vertex columns to fit the pool.
    --- Bullseye-only fields. All ignored unless kind == Kind_Bullseye. ---
    """
    bullseye_distance_dm: builtins.int
    """
    Bullseye distance in meters * 10 (e.g. 3285 = 328.5 m). 0 = unset.
    """
    bullseye_bearing_ref: builtins.int
    """
    Bullseye bearing reference: 0 unset, 1 Magnetic, 2 True, 3 Grid.
    """
    bullseye_flags: builtins.int
    """
    Bullseye attribute bit flags:
      bit 0: rangeRingVisible
      bit 1: hasRangeRings
      bit 2: edgeToCenter
      bit 3: mils
    """
    bullseye_uid_ref: builtins.str
    """
    Bullseye reference UID (anchor marker). Empty = anchor is self.
    """
    @property
    def vertex_lat_deltas(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ...
    @property
    def vertex_lon_deltas(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ...
    def __init__(
        self,
        *,
        kind: global___DrawnShape.Kind.ValueType = ...,
        style: global___DrawnShape.StyleMode.ValueType = ...,
        major_cm: builtins.int = ...,
        minor_cm: builtins.int = ...,
        angle_deg: builtins.int = ...,
        stroke_color: global___Team.ValueType = ...,
        stroke_argb: builtins.int = ...,
        stroke_weight_x10: builtins.int = ...,
        fill_color: global___Team.ValueType = ...,
        fill_argb: builtins.int = ...,
        labels_on: builtins.bool = ...,
        vertex_lat_deltas: collections.abc.Iterable[builtins.int] | None = ...,
        vertex_lon_deltas: collections.abc.Iterable[builtins.int] | None = ...,
        truncated: builtins.bool = ...,
        bullseye_distance_dm: builtins.int = ...,
        bullseye_bearing_ref: builtins.int = ...,
        bullseye_flags: builtins.int = ...,
        bullseye_uid_ref: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["angle_deg", b"angle_deg", "bullseye_bearing_ref", b"bullseye_bearing_ref", "bullseye_distance_dm", b"bullseye_distance_dm", "bullseye_flags", b"bullseye_flags", "bullseye_uid_ref", b"bullseye_uid_ref", "fill_argb", b"fill_argb", "fill_color", b"fill_color", "kind", b"kind", "labels_on", b"labels_on", "major_cm", b"major_cm", "minor_cm", b"minor_cm", "stroke_argb", b"stroke_argb", "stroke_color", b"stroke_color", "stroke_weight_x10", b"stroke_weight_x10", "style", b"style", "truncated", b"truncated", "vertex_lat_deltas", b"vertex_lat_deltas", "vertex_lon_deltas", b"vertex_lon_deltas"]) -> None: ...

global___DrawnShape = DrawnShape

@typing.final
class Marker(google.protobuf.message.Message):
    """
    Fixed point of interest: spot marker, waypoint, checkpoint, 2525 symbol,
    or custom icon.

    Covers CoT types b-m-p-s-m, b-m-p-w, b-m-p-c, b-m-p-s-p-i, b-m-p-s-p-loc,
    plus a-u-G / a-f-G / a-h-G / a-n-G with iconset paths. The marker position
    is carried on TAKPacketV2.latitude_i/longitude_i; fields below carry only
    the marker-specific metadata.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

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

    class _KindEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Marker._Kind.ValueType], builtins.type):
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
        Kind_Unspecified: Marker._Kind.ValueType  # 0
        """
        Unspecified — fall back to TAKPacketV2.cot_type_id
        """
        Kind_Spot: Marker._Kind.ValueType  # 1
        """
        b-m-p-s-m: Spot map marker
        """
        Kind_Waypoint: Marker._Kind.ValueType  # 2
        """
        b-m-p-w: Route waypoint
        """
        Kind_Checkpoint: Marker._Kind.ValueType  # 3
        """
        b-m-p-c: Checkpoint
        """
        Kind_SelfPosition: Marker._Kind.ValueType  # 4
        """
        b-m-p-s-p-i / b-m-p-s-p-loc: Self-position marker
        """
        Kind_Symbol2525: Marker._Kind.ValueType  # 5
        """
        2525B/C military symbol (iconsetpath = COT_MAPPING_2525B/...)
        """
        Kind_SpotMap: Marker._Kind.ValueType  # 6
        """
        COT_MAPPING_SPOTMAP icon (e.g. colored dot)
        """
        Kind_CustomIcon: Marker._Kind.ValueType  # 7
        """
        Custom icon set (UUID/GroupName/filename.png)
        """
        Kind_GoToPoint: Marker._Kind.ValueType  # 8
        """
        b-m-p-w-GOTO: Go To / bloodhound navigation waypoint.
        """
        Kind_InitialPoint: Marker._Kind.ValueType  # 9
        """
        b-m-p-c-ip: Initial point (mission planning control point).
        """
        Kind_ContactPoint: Marker._Kind.ValueType  # 10
        """
        b-m-p-c-cp: Contact point (mission planning control point).
        """
        Kind_ObservationPost: Marker._Kind.ValueType  # 11
        """
        b-m-p-s-p-op: Observation post.
        """
        Kind_ImageMarker: Marker._Kind.ValueType  # 12
        """
        b-i-x-i: Quick Pic geotagged image marker. iconset carries the
        image reference (local filename or remote URL); the image itself
        does not ride on the LoRa wire.
        """

    class Kind(_Kind, metaclass=_KindEnumTypeWrapper):
        """
        Marker kind. Used to pick sensible receiver defaults when the CoT type
        alone is ambiguous (e.g. a-u-G could be a 2525 symbol or a custom icon
        depending on the iconset path).
        """

    Kind_Unspecified: Marker.Kind.ValueType  # 0
    """
    Unspecified — fall back to TAKPacketV2.cot_type_id
    """
    Kind_Spot: Marker.Kind.ValueType  # 1
    """
    b-m-p-s-m: Spot map marker
    """
    Kind_Waypoint: Marker.Kind.ValueType  # 2
    """
    b-m-p-w: Route waypoint
    """
    Kind_Checkpoint: Marker.Kind.ValueType  # 3
    """
    b-m-p-c: Checkpoint
    """
    Kind_SelfPosition: Marker.Kind.ValueType  # 4
    """
    b-m-p-s-p-i / b-m-p-s-p-loc: Self-position marker
    """
    Kind_Symbol2525: Marker.Kind.ValueType  # 5
    """
    2525B/C military symbol (iconsetpath = COT_MAPPING_2525B/...)
    """
    Kind_SpotMap: Marker.Kind.ValueType  # 6
    """
    COT_MAPPING_SPOTMAP icon (e.g. colored dot)
    """
    Kind_CustomIcon: Marker.Kind.ValueType  # 7
    """
    Custom icon set (UUID/GroupName/filename.png)
    """
    Kind_GoToPoint: Marker.Kind.ValueType  # 8
    """
    b-m-p-w-GOTO: Go To / bloodhound navigation waypoint.
    """
    Kind_InitialPoint: Marker.Kind.ValueType  # 9
    """
    b-m-p-c-ip: Initial point (mission planning control point).
    """
    Kind_ContactPoint: Marker.Kind.ValueType  # 10
    """
    b-m-p-c-cp: Contact point (mission planning control point).
    """
    Kind_ObservationPost: Marker.Kind.ValueType  # 11
    """
    b-m-p-s-p-op: Observation post.
    """
    Kind_ImageMarker: Marker.Kind.ValueType  # 12
    """
    b-i-x-i: Quick Pic geotagged image marker. iconset carries the
    image reference (local filename or remote URL); the image itself
    does not ride on the LoRa wire.
    """

    KIND_FIELD_NUMBER: builtins.int
    COLOR_FIELD_NUMBER: builtins.int
    COLOR_ARGB_FIELD_NUMBER: builtins.int
    READINESS_FIELD_NUMBER: builtins.int
    PARENT_UID_FIELD_NUMBER: builtins.int
    PARENT_TYPE_FIELD_NUMBER: builtins.int
    PARENT_CALLSIGN_FIELD_NUMBER: builtins.int
    ICONSET_FIELD_NUMBER: builtins.int
    kind: global___Marker.Kind.ValueType
    """
    Marker kind
    """
    color: global___Team.ValueType
    """
    Marker color as a named palette entry. If Unspecifed_Color, the exact
    ARGB is in color_argb.
    """
    color_argb: builtins.int
    """
    Marker color exact ARGB bit pattern. Always populated on the wire.
    """
    readiness: builtins.bool
    """
    Status readiness flag (ATAK <status readiness="true"/>).
    """
    parent_uid: builtins.str
    """
    Parent link UID (ATAK <link uid=... relation="p-p"/>). Empty = no parent.
    For spot/waypoint markers this is typically the producing TAK user's UID.
    """
    parent_type: builtins.str
    """
    Parent CoT type (e.g. "a-f-G-U-C"). Usually the parent TAK user's type.
    """
    parent_callsign: builtins.str
    """
    Parent callsign (e.g. "HOPE").
    """
    iconset: builtins.str
    """
    Iconset path stored verbatim. ATAK emits three flavors:
      Kind_Symbol2525    -> "COT_MAPPING_2525B/<cot-type-prefix>/<cot-type>"
      Kind_SpotMap       -> "COT_MAPPING_SPOTMAP/<cot-type>/<argb>"
      Kind_CustomIcon    -> "<UUID>/<GroupName>/<filename>.png"
    Stored end-to-end without prefix stripping; the ~19 bytes saved by
    stripping well-known prefixes are not worth the builder-side bug
    surface, and the dict compresses the repetition effectively.
    """
    def __init__(
        self,
        *,
        kind: global___Marker.Kind.ValueType = ...,
        color: global___Team.ValueType = ...,
        color_argb: builtins.int = ...,
        readiness: builtins.bool = ...,
        parent_uid: builtins.str = ...,
        parent_type: builtins.str = ...,
        parent_callsign: builtins.str = ...,
        iconset: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["color", b"color", "color_argb", b"color_argb", "iconset", b"iconset", "kind", b"kind", "parent_callsign", b"parent_callsign", "parent_type", b"parent_type", "parent_uid", b"parent_uid", "readiness", b"readiness"]) -> None: ...

global___Marker = Marker

@typing.final
class RangeAndBearing(google.protobuf.message.Message):
    """
    Range and bearing measurement line from the event anchor to a target point.

    Covers CoT type u-rb-a. The anchor position is on
    TAKPacketV2.latitude_i/longitude_i; the target endpoint is carried as a
    CotGeoPoint — same delta-from-anchor encoding used by DrawnShape.vertices
    so a self-anchored RAB (common case) encodes in zero bytes.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ANCHOR_FIELD_NUMBER: builtins.int
    ANCHOR_UID_FIELD_NUMBER: builtins.int
    RANGE_CM_FIELD_NUMBER: builtins.int
    BEARING_CDEG_FIELD_NUMBER: builtins.int
    STROKE_COLOR_FIELD_NUMBER: builtins.int
    STROKE_ARGB_FIELD_NUMBER: builtins.int
    STROKE_WEIGHT_X10_FIELD_NUMBER: builtins.int
    anchor_uid: builtins.str
    """
    Anchor UID (from <link uid="anchor-1"/>). Empty = free-standing.
    """
    range_cm: builtins.int
    """
    Range in centimeters (value * 100). Range 0..4294 km.
    """
    bearing_cdeg: builtins.int
    """
    Bearing in degrees * 100 (0..36000).
    """
    stroke_color: global___Team.ValueType
    """
    Stroke color as a Team palette entry. See DrawnShape.stroke_color doc.
    """
    stroke_argb: builtins.int
    """
    Stroke color exact ARGB fallback.
    """
    stroke_weight_x10: builtins.int
    """
    Stroke weight * 10 (e.g. 30 = 3.0).
    """
    @property
    def anchor(self) -> global___CotGeoPoint:
        """
        Target/anchor endpoint (delta-encoded from TAKPacketV2.latitude_i/longitude_i).
        """

    def __init__(
        self,
        *,
        anchor: global___CotGeoPoint | None = ...,
        anchor_uid: builtins.str = ...,
        range_cm: builtins.int = ...,
        bearing_cdeg: builtins.int = ...,
        stroke_color: global___Team.ValueType = ...,
        stroke_argb: builtins.int = ...,
        stroke_weight_x10: builtins.int = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["anchor", b"anchor"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["anchor", b"anchor", "anchor_uid", b"anchor_uid", "bearing_cdeg", b"bearing_cdeg", "range_cm", b"range_cm", "stroke_argb", b"stroke_argb", "stroke_color", b"stroke_color", "stroke_weight_x10", b"stroke_weight_x10"]) -> None: ...

global___RangeAndBearing = RangeAndBearing

@typing.final
class Route(google.protobuf.message.Message):
    """
    Named route consisting of ordered waypoints and control points.

    Covers CoT type b-m-r. The first waypoint's position is on
    TAKPacketV2.latitude_i/longitude_i; subsequent waypoints and checkpoints
    are in `links`. Link count is capped at 16 by the nanopb pool; senders
    MUST truncate longer routes and set `truncated = true`.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

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

    class _MethodEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Route._Method.ValueType], builtins.type):
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
        Method_Unspecified: Route._Method.ValueType  # 0
        """
        Unspecified / unknown
        """
        Method_Driving: Route._Method.ValueType  # 1
        """
        Driving / vehicle
        """
        Method_Walking: Route._Method.ValueType  # 2
        """
        Walking / foot
        """
        Method_Flying: Route._Method.ValueType  # 3
        """
        Flying
        """
        Method_Swimming: Route._Method.ValueType  # 4
        """
        Swimming (individual)
        """
        Method_Watercraft: Route._Method.ValueType  # 5
        """
        Watercraft (boat)
        """

    class Method(_Method, metaclass=_MethodEnumTypeWrapper):
        """
        Travel method for the route.
        """

    Method_Unspecified: Route.Method.ValueType  # 0
    """
    Unspecified / unknown
    """
    Method_Driving: Route.Method.ValueType  # 1
    """
    Driving / vehicle
    """
    Method_Walking: Route.Method.ValueType  # 2
    """
    Walking / foot
    """
    Method_Flying: Route.Method.ValueType  # 3
    """
    Flying
    """
    Method_Swimming: Route.Method.ValueType  # 4
    """
    Swimming (individual)
    """
    Method_Watercraft: Route.Method.ValueType  # 5
    """
    Watercraft (boat)
    """

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

    class _DirectionEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Route._Direction.ValueType], builtins.type):
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
        Direction_Unspecified: Route._Direction.ValueType  # 0
        """
        Unspecified
        """
        Direction_Infil: Route._Direction.ValueType  # 1
        """
        Infiltration (ingress)
        """
        Direction_Exfil: Route._Direction.ValueType  # 2
        """
        Exfiltration (egress)
        """

    class Direction(_Direction, metaclass=_DirectionEnumTypeWrapper):
        """
        Route direction (infil = ingress, exfil = egress).
        """

    Direction_Unspecified: Route.Direction.ValueType  # 0
    """
    Unspecified
    """
    Direction_Infil: Route.Direction.ValueType  # 1
    """
    Infiltration (ingress)
    """
    Direction_Exfil: Route.Direction.ValueType  # 2
    """
    Exfiltration (egress)
    """

    @typing.final
    class Link(google.protobuf.message.Message):
        """
        Route waypoint or control point. Each link corresponds to one ATAK
        <link type=... point=...> entry inside the b-m-r event.
        """

        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        POINT_FIELD_NUMBER: builtins.int
        UID_FIELD_NUMBER: builtins.int
        CALLSIGN_FIELD_NUMBER: builtins.int
        LINK_TYPE_FIELD_NUMBER: builtins.int
        uid: builtins.str
        """
        Optional UID (empty = receiver derives).
        """
        callsign: builtins.str
        """
        Optional display callsign (e.g. "CP1"). Empty for unnamed control points.
        """
        link_type: builtins.int
        """
        Link role: 0 = waypoint (b-m-p-w), 1 = checkpoint (b-m-p-c).
        """
        @property
        def point(self) -> global___CotGeoPoint:
            """
            Waypoint position (delta-encoded from TAKPacketV2.latitude_i/longitude_i).
            """

        def __init__(
            self,
            *,
            point: global___CotGeoPoint | None = ...,
            uid: builtins.str = ...,
            callsign: builtins.str = ...,
            link_type: builtins.int = ...,
        ) -> None: ...
        def HasField(self, field_name: typing.Literal["point", b"point"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing.Literal["callsign", b"callsign", "link_type", b"link_type", "point", b"point", "uid", b"uid"]) -> None: ...

    METHOD_FIELD_NUMBER: builtins.int
    DIRECTION_FIELD_NUMBER: builtins.int
    PREFIX_FIELD_NUMBER: builtins.int
    STROKE_WEIGHT_X10_FIELD_NUMBER: builtins.int
    LINKS_FIELD_NUMBER: builtins.int
    TRUNCATED_FIELD_NUMBER: builtins.int
    method: global___Route.Method.ValueType
    """
    Travel method
    """
    direction: global___Route.Direction.ValueType
    """
    Direction (infil/exfil)
    """
    prefix: builtins.str
    """
    Waypoint name prefix (e.g. "CP").
    """
    stroke_weight_x10: builtins.int
    """
    Stroke weight * 10 (e.g. 30 = 3.0). 0 = default.
    """
    truncated: builtins.bool
    """
    True if the sender truncated `links` to fit the pool.
    """
    @property
    def links(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Route.Link]:
        """
        Ordered list of route control points. Capped at 16.
        """

    def __init__(
        self,
        *,
        method: global___Route.Method.ValueType = ...,
        direction: global___Route.Direction.ValueType = ...,
        prefix: builtins.str = ...,
        stroke_weight_x10: builtins.int = ...,
        links: collections.abc.Iterable[global___Route.Link] | None = ...,
        truncated: builtins.bool = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["direction", b"direction", "links", b"links", "method", b"method", "prefix", b"prefix", "stroke_weight_x10", b"stroke_weight_x10", "truncated", b"truncated"]) -> None: ...

global___Route = Route

@typing.final
class CasevacReport(google.protobuf.message.Message):
    """
    9-line MEDEVAC request (CoT type b-r-f-h-c).

    Mirrors the ATAK MedLine tool's <_medevac_> detail element. Every field
    is optional (proto3 default); senders omit lines they don't have. The
    envelope (TAKPacketV2.uid, cot_type_id=b-r-f-h-c, latitude_i/longitude_i,
    altitude, callsign) carries Line 1 (location) and Line 2 (callsign).

    All numeric fields are tight varints so a complete 9-line request fits
    in well under 100 bytes of proto on the wire.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

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

    class _PrecedenceEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[CasevacReport._Precedence.ValueType], builtins.type):
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
        Precedence_Unspecified: CasevacReport._Precedence.ValueType  # 0
        Precedence_Urgent: CasevacReport._Precedence.ValueType  # 1
        """A - immediate, life-threatening"""
        Precedence_UrgentSurgical: CasevacReport._Precedence.ValueType  # 2
        """B - needs surgery"""
        Precedence_Priority: CasevacReport._Precedence.ValueType  # 3
        """C - within 4 hours"""
        Precedence_Routine: CasevacReport._Precedence.ValueType  # 4
        """D - within 24 hours"""
        Precedence_Convenience: CasevacReport._Precedence.ValueType  # 5
        """E - convenience"""

    class Precedence(_Precedence, metaclass=_PrecedenceEnumTypeWrapper):
        """
        Line 3: precedence / urgency.
        """

    Precedence_Unspecified: CasevacReport.Precedence.ValueType  # 0
    Precedence_Urgent: CasevacReport.Precedence.ValueType  # 1
    """A - immediate, life-threatening"""
    Precedence_UrgentSurgical: CasevacReport.Precedence.ValueType  # 2
    """B - needs surgery"""
    Precedence_Priority: CasevacReport.Precedence.ValueType  # 3
    """C - within 4 hours"""
    Precedence_Routine: CasevacReport.Precedence.ValueType  # 4
    """D - within 24 hours"""
    Precedence_Convenience: CasevacReport.Precedence.ValueType  # 5
    """E - convenience"""

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

    class _HlzMarkingEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[CasevacReport._HlzMarking.ValueType], builtins.type):
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
        HlzMarking_Unspecified: CasevacReport._HlzMarking.ValueType  # 0
        HlzMarking_Panels: CasevacReport._HlzMarking.ValueType  # 1
        HlzMarking_PyroSignal: CasevacReport._HlzMarking.ValueType  # 2
        HlzMarking_Smoke: CasevacReport._HlzMarking.ValueType  # 3
        HlzMarking_None: CasevacReport._HlzMarking.ValueType  # 4
        HlzMarking_Other: CasevacReport._HlzMarking.ValueType  # 5

    class HlzMarking(_HlzMarking, metaclass=_HlzMarkingEnumTypeWrapper):
        """
        Line 7: HLZ marking method.
        """

    HlzMarking_Unspecified: CasevacReport.HlzMarking.ValueType  # 0
    HlzMarking_Panels: CasevacReport.HlzMarking.ValueType  # 1
    HlzMarking_PyroSignal: CasevacReport.HlzMarking.ValueType  # 2
    HlzMarking_Smoke: CasevacReport.HlzMarking.ValueType  # 3
    HlzMarking_None: CasevacReport.HlzMarking.ValueType  # 4
    HlzMarking_Other: CasevacReport.HlzMarking.ValueType  # 5

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

    class _SecurityEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[CasevacReport._Security.ValueType], builtins.type):
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
        Security_Unspecified: CasevacReport._Security.ValueType  # 0
        Security_NoEnemy: CasevacReport._Security.ValueType  # 1
        """N - no enemy activity"""
        Security_PossibleEnemy: CasevacReport._Security.ValueType  # 2
        """P - possible enemy"""
        Security_EnemyInArea: CasevacReport._Security.ValueType  # 3
        """E - enemy, approach with caution"""
        Security_EnemyInArmedContact: CasevacReport._Security.ValueType  # 4
        """X - armed escort required"""

    class Security(_Security, metaclass=_SecurityEnumTypeWrapper):
        """
        Line 6: security situation at the pickup zone.
        """

    Security_Unspecified: CasevacReport.Security.ValueType  # 0
    Security_NoEnemy: CasevacReport.Security.ValueType  # 1
    """N - no enemy activity"""
    Security_PossibleEnemy: CasevacReport.Security.ValueType  # 2
    """P - possible enemy"""
    Security_EnemyInArea: CasevacReport.Security.ValueType  # 3
    """E - enemy, approach with caution"""
    Security_EnemyInArmedContact: CasevacReport.Security.ValueType  # 4
    """X - armed escort required"""

    PRECEDENCE_FIELD_NUMBER: builtins.int
    EQUIPMENT_FLAGS_FIELD_NUMBER: builtins.int
    LITTER_PATIENTS_FIELD_NUMBER: builtins.int
    AMBULATORY_PATIENTS_FIELD_NUMBER: builtins.int
    SECURITY_FIELD_NUMBER: builtins.int
    HLZ_MARKING_FIELD_NUMBER: builtins.int
    ZONE_MARKER_FIELD_NUMBER: builtins.int
    US_MILITARY_FIELD_NUMBER: builtins.int
    US_CIVILIAN_FIELD_NUMBER: builtins.int
    NON_US_MILITARY_FIELD_NUMBER: builtins.int
    NON_US_CIVILIAN_FIELD_NUMBER: builtins.int
    EPW_FIELD_NUMBER: builtins.int
    CHILD_FIELD_NUMBER: builtins.int
    TERRAIN_FLAGS_FIELD_NUMBER: builtins.int
    FREQUENCY_FIELD_NUMBER: builtins.int
    TITLE_FIELD_NUMBER: builtins.int
    MEDLINE_REMARKS_FIELD_NUMBER: builtins.int
    URGENT_COUNT_FIELD_NUMBER: builtins.int
    URGENT_SURGICAL_COUNT_FIELD_NUMBER: builtins.int
    PRIORITY_COUNT_FIELD_NUMBER: builtins.int
    ROUTINE_COUNT_FIELD_NUMBER: builtins.int
    CONVENIENCE_COUNT_FIELD_NUMBER: builtins.int
    EQUIPMENT_DETAIL_FIELD_NUMBER: builtins.int
    ZONE_PROTECTED_COORD_FIELD_NUMBER: builtins.int
    TERRAIN_SLOPE_DIR_FIELD_NUMBER: builtins.int
    TERRAIN_OTHER_DETAIL_FIELD_NUMBER: builtins.int
    MARKED_BY_FIELD_NUMBER: builtins.int
    OBSTACLES_FIELD_NUMBER: builtins.int
    WINDS_ARE_FROM_FIELD_NUMBER: builtins.int
    FRIENDLIES_FIELD_NUMBER: builtins.int
    ENEMY_FIELD_NUMBER: builtins.int
    HLZ_REMARKS_FIELD_NUMBER: builtins.int
    ZMIST_FIELD_NUMBER: builtins.int
    precedence: global___CasevacReport.Precedence.ValueType
    """
    Line 3: precedence / urgency.
    """
    equipment_flags: builtins.int
    """
    Line 4: special equipment required, as a bitfield.
      bit 0: none
      bit 1: hoist
      bit 2: extraction equipment
      bit 3: ventilator
      bit 4: blood
    """
    litter_patients: builtins.int
    """
    Line 5: number of litter (stretcher-bound) patients.
    """
    ambulatory_patients: builtins.int
    """
    Line 5: number of ambulatory (walking-wounded) patients.
    """
    security: global___CasevacReport.Security.ValueType
    """
    Line 6: security situation at the PZ.
    """
    hlz_marking: global___CasevacReport.HlzMarking.ValueType
    """
    Line 7: HLZ marking method.
    """
    zone_marker: builtins.str
    """
    Line 7 supplementary: short free-text describing the zone marker
    (e.g. "Green smoke", "VS-17 panel west"). Capped tight in options.
    """
    us_military: builtins.int
    """--- Line 8: patient nationality counts ---"""
    us_civilian: builtins.int
    non_us_military: builtins.int
    non_us_civilian: builtins.int
    epw: builtins.int
    child: builtins.int
    terrain_flags: builtins.int
    """
    Line 9: terrain and obstacles at the PZ, as a bitfield.
      bit 0: slope
      bit 1: rough
      bit 2: loose
      bit 3: trees
      bit 4: wires
      bit 5: other
    """
    frequency: builtins.str
    """
    Line 2: radio frequency / callsign metadata (e.g. "38.90 Mhz" or
    "Victor 6"). Capped tight in options.
    """
    title: builtins.str
    """--- v2.x medline extensions (tags 16–33) --------------------------------

    Fields 16+ cost a 2-byte tag instead of 1 byte, but they're usually
    sparse so the on-wire delta is modest when most stay unset. A fully
    populated CASEVAC with 13 free-text fields + 2 ZMIST entries can run
    200-400 bytes compressed, i.e. potentially over the 237 B LoRa MTU.
    Callers that hit the MTU on the `compressWithRemarksFallback` path
    SHOULD strip the tier-2 situational fields (tags 28-32 + terrain_other_detail)
    before dropping the packet entirely. See README "CASEVAC tier-2 stripping".


    Short title / MEDEVAC identifier (e.g. "EAGLE.15.181230"). Usually the
    same as the envelope callsign but ATAK sometimes carries a distinct
    ops-number here.
    """
    medline_remarks: builtins.str
    """
    Primary medline free-text — the single most clinically important line
    on a MEDLINE form (e.g. "2 urgent litter patients, smoke on approach").
    MUST be preserved under MTU pressure as long as any casevac is sent.
    """
    urgent_count: builtins.int
    """
    Line 3 (newer ATAK format): patient counts by precedence level.
    Coexists with the enum-style `precedence` field (tag 1) — older ATAK
    emits a single enum, newer ATAK emits these counts, and both can be
    set simultaneously. Senders populate whichever style(s) the source
    XML had; receivers prefer counts when non-zero.
    """
    urgent_surgical_count: builtins.int
    priority_count: builtins.int
    routine_count: builtins.int
    convenience_count: builtins.int
    equipment_detail: builtins.str
    """
    Line 4 supplementary: free-text description of non-standard equipment
    (e.g. "Blood warmer"). Pairs with the `equipment_flags` bitfield.
    """
    zone_protected_coord: builtins.str
    """
    Line 1 override: MGRS grid when distinct from the event anchor point
    (e.g. "34T CQ 12345 67890"). Event lat/lon/hae still carries the
    numeric location; this field preserves the exact MGRS string the
    medic entered.
    """
    terrain_slope_dir: builtins.str
    """
    Line 9 supplementary: slope direction (e.g. "N", "NE", "SSW") when
    `terrain_flags` bit 0 (slope) is set.
    """
    terrain_other_detail: builtins.str
    """
    Line 9 supplementary: free-text description of "other" terrain hazards
    (e.g. "Loose debris on west edge") when `terrain_flags` bit 5 (other)
    is set. Tier-2 strippable under MTU pressure.
    """
    marked_by: builtins.str
    """
    Line 7 supplementary: how the zone is being marked right now
    (e.g. "Orange smoke", "VS-17 panel"). Complements the structured
    `hlz_marking` enum with a specific human-readable description.
    """
    obstacles: builtins.str
    """--- Tier-2 situational awareness (stripped first under MTU pressure) ---
    These fields are free-text context that helps the receiver plan the
    approach but aren't strictly required to evacuate the patient.


    Nearby obstacles on the approach (e.g. "Power lines north of HLZ").
    """
    winds_are_from: builtins.str
    """
    Wind direction and speed (e.g. "270 at 12 kts").
    """
    friendlies: builtins.str
    """
    Friendly forces posture near the pickup zone
    (e.g. "Squad east of HLZ").
    """
    enemy: builtins.str
    """
    Known or suspected enemy positions near the pickup zone
    (e.g. "Possible enemy on south ridge").
    """
    hlz_remarks: builtins.str
    """
    Free-text description of the HLZ itself
    (e.g. "Primary HLZ is soccer field").
    """
    @property
    def zmist(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ZMistEntry]:
        """
        Per-patient clinical records. Each entry is one patient's ZMIST card
        (Zap number / Mechanism / Injuries / Signs / Treatment). Repeatable —
        a mass-casualty event can carry 1-6 entries in practice, limited by
        the 237 B LoRa MTU.
        """

    def __init__(
        self,
        *,
        precedence: global___CasevacReport.Precedence.ValueType = ...,
        equipment_flags: builtins.int = ...,
        litter_patients: builtins.int = ...,
        ambulatory_patients: builtins.int = ...,
        security: global___CasevacReport.Security.ValueType = ...,
        hlz_marking: global___CasevacReport.HlzMarking.ValueType = ...,
        zone_marker: builtins.str = ...,
        us_military: builtins.int = ...,
        us_civilian: builtins.int = ...,
        non_us_military: builtins.int = ...,
        non_us_civilian: builtins.int = ...,
        epw: builtins.int = ...,
        child: builtins.int = ...,
        terrain_flags: builtins.int = ...,
        frequency: builtins.str = ...,
        title: builtins.str = ...,
        medline_remarks: builtins.str = ...,
        urgent_count: builtins.int = ...,
        urgent_surgical_count: builtins.int = ...,
        priority_count: builtins.int = ...,
        routine_count: builtins.int = ...,
        convenience_count: builtins.int = ...,
        equipment_detail: builtins.str = ...,
        zone_protected_coord: builtins.str = ...,
        terrain_slope_dir: builtins.str = ...,
        terrain_other_detail: builtins.str = ...,
        marked_by: builtins.str = ...,
        obstacles: builtins.str = ...,
        winds_are_from: builtins.str = ...,
        friendlies: builtins.str = ...,
        enemy: builtins.str = ...,
        hlz_remarks: builtins.str = ...,
        zmist: collections.abc.Iterable[global___ZMistEntry] | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["ambulatory_patients", b"ambulatory_patients", "child", b"child", "convenience_count", b"convenience_count", "enemy", b"enemy", "epw", b"epw", "equipment_detail", b"equipment_detail", "equipment_flags", b"equipment_flags", "frequency", b"frequency", "friendlies", b"friendlies", "hlz_marking", b"hlz_marking", "hlz_remarks", b"hlz_remarks", "litter_patients", b"litter_patients", "marked_by", b"marked_by", "medline_remarks", b"medline_remarks", "non_us_civilian", b"non_us_civilian", "non_us_military", b"non_us_military", "obstacles", b"obstacles", "precedence", b"precedence", "priority_count", b"priority_count", "routine_count", b"routine_count", "security", b"security", "terrain_flags", b"terrain_flags", "terrain_other_detail", b"terrain_other_detail", "terrain_slope_dir", b"terrain_slope_dir", "title", b"title", "urgent_count", b"urgent_count", "urgent_surgical_count", b"urgent_surgical_count", "us_civilian", b"us_civilian", "us_military", b"us_military", "winds_are_from", b"winds_are_from", "zmist", b"zmist", "zone_marker", b"zone_marker", "zone_protected_coord", b"zone_protected_coord"]) -> None: ...

global___CasevacReport = CasevacReport

@typing.final
class ZMistEntry(google.protobuf.message.Message):
    """
    Per-patient clinical summary record — one entry per patient in a CASEVAC.
    Maps directly to ATAK's <zMist> child element inside <zMistsMap>.
    All fields are optional free-text; senders populate what they have.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    TITLE_FIELD_NUMBER: builtins.int
    Z_FIELD_NUMBER: builtins.int
    M_FIELD_NUMBER: builtins.int
    I_FIELD_NUMBER: builtins.int
    S_FIELD_NUMBER: builtins.int
    T_FIELD_NUMBER: builtins.int
    title: builtins.str
    """
    Patient identifier / sequence label (e.g. "ZMIST-1", "ZMIST-2").
    """
    z: builtins.str
    """
    Zap number — unique patient tracking ID (often a terse code like
    "Gunshot" or a serial).
    """
    m: builtins.str
    """
    Mechanism of injury (e.g. "Penetrating trauma", "Blast injury").
    """
    i: builtins.str
    """
    Injuries observed (e.g. "Left thigh", "Concussion").
    """
    s: builtins.str
    """
    Signs / vital stats (e.g. "Stable", "Priority", "BP 110/70").
    """
    t: builtins.str
    """
    Treatment given (e.g. "Tourniquet 1810Z", "O2 administered").
    """
    def __init__(
        self,
        *,
        title: builtins.str = ...,
        z: builtins.str = ...,
        m: builtins.str = ...,
        i: builtins.str = ...,
        s: builtins.str = ...,
        t: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["i", b"i", "m", b"m", "s", b"s", "t", b"t", "title", b"title", "z", b"z"]) -> None: ...

global___ZMistEntry = ZMistEntry

@typing.final
class EmergencyAlert(google.protobuf.message.Message):
    """
    Emergency alert / 911 beacon (CoT types b-a-o-tbl, b-a-o-pan, b-a-o-opn,
    b-a-o-can, b-a-o-c, b-a-g).

    Small, high-priority structured record. The CoT type string is still set
    on cot_type_id so receivers that ignore payload_variant can still display
    the alert from the enum alone; the typed fields let modern receivers show
    the authoring unit and handle cancel-referencing without XML parsing.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

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

    class _TypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[EmergencyAlert._Type.ValueType], builtins.type):
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
        Type_Unspecified: EmergencyAlert._Type.ValueType  # 0
        Type_Alert911: EmergencyAlert._Type.ValueType  # 1
        """b-a-o-tbl"""
        Type_RingTheBell: EmergencyAlert._Type.ValueType  # 2
        """b-a-o-pan"""
        Type_InContact: EmergencyAlert._Type.ValueType  # 3
        """b-a-o-opn"""
        Type_GeoFenceBreached: EmergencyAlert._Type.ValueType  # 4
        """b-a-g"""
        Type_Custom: EmergencyAlert._Type.ValueType  # 5
        """b-a-o-c"""
        Type_Cancel: EmergencyAlert._Type.ValueType  # 6
        """b-a-o-can"""

    class Type(_Type, metaclass=_TypeEnumTypeWrapper): ...
    Type_Unspecified: EmergencyAlert.Type.ValueType  # 0
    Type_Alert911: EmergencyAlert.Type.ValueType  # 1
    """b-a-o-tbl"""
    Type_RingTheBell: EmergencyAlert.Type.ValueType  # 2
    """b-a-o-pan"""
    Type_InContact: EmergencyAlert.Type.ValueType  # 3
    """b-a-o-opn"""
    Type_GeoFenceBreached: EmergencyAlert.Type.ValueType  # 4
    """b-a-g"""
    Type_Custom: EmergencyAlert.Type.ValueType  # 5
    """b-a-o-c"""
    Type_Cancel: EmergencyAlert.Type.ValueType  # 6
    """b-a-o-can"""

    TYPE_FIELD_NUMBER: builtins.int
    AUTHORING_UID_FIELD_NUMBER: builtins.int
    CANCEL_REFERENCE_UID_FIELD_NUMBER: builtins.int
    type: global___EmergencyAlert.Type.ValueType
    """
    Alert discriminator.
    """
    authoring_uid: builtins.str
    """
    UID of the unit that raised the alert. Often the same as
    TAKPacketV2.uid but can be a parent device uid when a tracker raises
    an alert on behalf of a dismount.
    """
    cancel_reference_uid: builtins.str
    """
    For Type_Cancel: the uid of the alert being cancelled. Empty for
    non-cancel alert types.
    """
    def __init__(
        self,
        *,
        type: global___EmergencyAlert.Type.ValueType = ...,
        authoring_uid: builtins.str = ...,
        cancel_reference_uid: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["authoring_uid", b"authoring_uid", "cancel_reference_uid", b"cancel_reference_uid", "type", b"type"]) -> None: ...

global___EmergencyAlert = EmergencyAlert

@typing.final
class TaskRequest(google.protobuf.message.Message):
    """
    Task / engage request (CoT type t-s).

    Mirrors ATAK's TaskCotReceiver / CotTaskBuilder workflow. The envelope
    carries the task's originating uid (implicit requester), position, and
    creation time; the fields below carry structured metadata the raw-detail
    fallback currently loses.

    Fields are deliberately lean — this variant is closer to the MTU ceiling
    than the others, so every string is capped in options.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

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

    class _PriorityEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[TaskRequest._Priority.ValueType], builtins.type):
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
        Priority_Unspecified: TaskRequest._Priority.ValueType  # 0
        Priority_Low: TaskRequest._Priority.ValueType  # 1
        Priority_Normal: TaskRequest._Priority.ValueType  # 2
        Priority_High: TaskRequest._Priority.ValueType  # 3
        Priority_Critical: TaskRequest._Priority.ValueType  # 4

    class Priority(_Priority, metaclass=_PriorityEnumTypeWrapper): ...
    Priority_Unspecified: TaskRequest.Priority.ValueType  # 0
    Priority_Low: TaskRequest.Priority.ValueType  # 1
    Priority_Normal: TaskRequest.Priority.ValueType  # 2
    Priority_High: TaskRequest.Priority.ValueType  # 3
    Priority_Critical: TaskRequest.Priority.ValueType  # 4

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

    class _StatusEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[TaskRequest._Status.ValueType], builtins.type):
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
        Status_Unspecified: TaskRequest._Status.ValueType  # 0
        Status_Pending: TaskRequest._Status.ValueType  # 1
        """assigned, not yet acknowledged"""
        Status_Acknowledged: TaskRequest._Status.ValueType  # 2
        """assignee has seen it"""
        Status_InProgress: TaskRequest._Status.ValueType  # 3
        """assignee is working it"""
        Status_Completed: TaskRequest._Status.ValueType  # 4
        """task done"""
        Status_Cancelled: TaskRequest._Status.ValueType  # 5
        """cancelled before completion"""

    class Status(_Status, metaclass=_StatusEnumTypeWrapper): ...
    Status_Unspecified: TaskRequest.Status.ValueType  # 0
    Status_Pending: TaskRequest.Status.ValueType  # 1
    """assigned, not yet acknowledged"""
    Status_Acknowledged: TaskRequest.Status.ValueType  # 2
    """assignee has seen it"""
    Status_InProgress: TaskRequest.Status.ValueType  # 3
    """assignee is working it"""
    Status_Completed: TaskRequest.Status.ValueType  # 4
    """task done"""
    Status_Cancelled: TaskRequest.Status.ValueType  # 5
    """cancelled before completion"""

    TASK_TYPE_FIELD_NUMBER: builtins.int
    TARGET_UID_FIELD_NUMBER: builtins.int
    ASSIGNEE_UID_FIELD_NUMBER: builtins.int
    PRIORITY_FIELD_NUMBER: builtins.int
    STATUS_FIELD_NUMBER: builtins.int
    NOTE_FIELD_NUMBER: builtins.int
    task_type: builtins.str
    """
    Short tag for the task category (e.g. "engage", "observe", "recon",
    "rescue"). Free text on the wire so ATAK-specific task taxonomies
    don't need proto coordination; capped tight in options.
    """
    target_uid: builtins.str
    """
    UID of the target / map item being tasked.
    """
    assignee_uid: builtins.str
    """
    UID of the assigned unit. Empty = unassigned / broadcast task.
    """
    priority: global___TaskRequest.Priority.ValueType
    status: global___TaskRequest.Status.ValueType
    note: builtins.str
    """
    Optional short note (reason, constraints, grid reference). Capped
    tight in options to keep the worst-case under the LoRa MTU.
    """
    def __init__(
        self,
        *,
        task_type: builtins.str = ...,
        target_uid: builtins.str = ...,
        assignee_uid: builtins.str = ...,
        priority: global___TaskRequest.Priority.ValueType = ...,
        status: global___TaskRequest.Status.ValueType = ...,
        note: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["assignee_uid", b"assignee_uid", "note", b"note", "priority", b"priority", "status", b"status", "target_uid", b"target_uid", "task_type", b"task_type"]) -> None: ...

global___TaskRequest = TaskRequest

@typing.final
class TAKEnvironment(google.protobuf.message.Message):
    """
    Weather annotation from <environment> CoT detail element.

    Attaches to any TAKPacketV2 regardless of payload_variant — an Aircraft,
    PLI, or Marker can all carry observed conditions at the emitting station.
    ATAK-CIV ships an XSD for <environment> but no dedicated handler, so the
    element round-trips through the generic detail pipeline; this message
    promotes it to a first-class structured field.

    Target wire cost: ~6-8 bytes compressed with a fully populated instance.

    Named `TAKEnvironment` (not just `Environment`) because the bare name
    collides with `SwiftUI.Environment` — every SwiftUI view in a consuming
    iOS app uses the `@Environment` property wrapper, and importing the
    generated proto module would make `Environment` ambiguous in every one
    of those files. The `TAK` prefix matches the convention used by the
    outer `TAKPacketV2` wrapper and is unambiguous across all target
    languages (Swift, Kotlin, Python, TypeScript, C#).
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    TEMPERATURE_C_X10_FIELD_NUMBER: builtins.int
    WIND_DIRECTION_DEG_FIELD_NUMBER: builtins.int
    WIND_SPEED_CM_S_FIELD_NUMBER: builtins.int
    temperature_c_x10: builtins.int
    """
    Temperature in deci-degrees Celsius. 225 = 22.5°C.
    Range covers -50°C to +50°C (-500 to +500) which spans every realistic
    outdoor TAK deployment. sint32 because negative temps are common in
    cold-weather ops.
    """
    wind_direction_deg: builtins.int
    """
    Wind direction in whole degrees, 0-359. "Direction FROM" per
    meteorological convention (matches CoT / ATAK).
    """
    wind_speed_cm_s: builtins.int
    """
    Wind speed in cm/s. Matches the unit of TAKPacketV2.speed for
    consistency. 1200 = 12.00 m/s = ~27 mph.
    """
    def __init__(
        self,
        *,
        temperature_c_x10: builtins.int = ...,
        wind_direction_deg: builtins.int = ...,
        wind_speed_cm_s: builtins.int = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["temperature_c_x10", b"temperature_c_x10", "wind_direction_deg", b"wind_direction_deg", "wind_speed_cm_s", b"wind_speed_cm_s"]) -> None: ...

global___TAKEnvironment = TAKEnvironment

@typing.final
class SensorFov(google.protobuf.message.Message):
    """
    Sensor field-of-view cone from <sensor> CoT detail element.

    Encodes the 8 geometry attributes that ATAK-CIV's SensorDetailHandler
    reads from the wire; drops the 9 visual-styling attributes that are
    receiver-side render hints (fovAlpha, fovRed/Green/Blue, strokeColor,
    strokeWeight, displayMagneticReference, hideFov, fovLabels, rangeLines).
    The receiving ATAK client restores those from its own defaults, same as
    every other CoT carried over Meshtastic today.

    Attaches to any TAKPacketV2 — a PLI with a sensor on the operator's head,
    an Aircraft with a FLIR turret, a Marker dropped on a UAV.
    Target wire cost: ~7-14 bytes compressed (dominated by model string).
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

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

    class _SensorTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[SensorFov._SensorType.ValueType], builtins.type):
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
        SensorType_Unspecified: SensorFov._SensorType.ValueType  # 0
        SensorType_Camera: SensorFov._SensorType.ValueType  # 1
        """daylight / general optical"""
        SensorType_Thermal: SensorFov._SensorType.ValueType  # 2
        """FLIR, thermal imager"""
        SensorType_Laser: SensorFov._SensorType.ValueType  # 3
        """rangefinder, LRF, designator"""
        SensorType_Nvg: SensorFov._SensorType.ValueType  # 4
        """night vision goggles"""
        SensorType_Rf: SensorFov._SensorType.ValueType  # 5
        """radio/radar direction-finding"""
        SensorType_Other: SensorFov._SensorType.ValueType  # 6

    class SensorType(_SensorType, metaclass=_SensorTypeEnumTypeWrapper):
        """
        Coarse sensor category, inferred from `model` on parse when the source
        XML doesn't label it. Receivers that render differently per sensor
        class (thermal overlay vs daylight cone) use this.
        """

    SensorType_Unspecified: SensorFov.SensorType.ValueType  # 0
    SensorType_Camera: SensorFov.SensorType.ValueType  # 1
    """daylight / general optical"""
    SensorType_Thermal: SensorFov.SensorType.ValueType  # 2
    """FLIR, thermal imager"""
    SensorType_Laser: SensorFov.SensorType.ValueType  # 3
    """rangefinder, LRF, designator"""
    SensorType_Nvg: SensorFov.SensorType.ValueType  # 4
    """night vision goggles"""
    SensorType_Rf: SensorFov.SensorType.ValueType  # 5
    """radio/radar direction-finding"""
    SensorType_Other: SensorFov.SensorType.ValueType  # 6

    TYPE_FIELD_NUMBER: builtins.int
    AZIMUTH_DEG_FIELD_NUMBER: builtins.int
    RANGE_M_FIELD_NUMBER: builtins.int
    FOV_HORIZONTAL_DEG_FIELD_NUMBER: builtins.int
    FOV_VERTICAL_DEG_FIELD_NUMBER: builtins.int
    ELEVATION_DEG_FIELD_NUMBER: builtins.int
    ROLL_DEG_FIELD_NUMBER: builtins.int
    MODEL_FIELD_NUMBER: builtins.int
    type: global___SensorFov.SensorType.ValueType
    azimuth_deg: builtins.int
    """
    Azimuth in whole degrees, 0-359. "Pointing direction" of the cone axis,
    measured clockwise from true north. Whole degrees match ATAK-CIV's
    SensorDetailHandler default (270°) and save varint bytes over centi-deg.
    """
    range_m: builtins.int
    """
    Maximum range of the cone in meters.
    Optional — if unset, receivers should use the ATAK-CIV default of 100m.
    """
    fov_horizontal_deg: builtins.int
    """
    Horizontal field of view in whole degrees (cone's angular width).
    ATAK-CIV default is 45°.
    """
    fov_vertical_deg: builtins.int
    """
    Vertical field of view in whole degrees. ATAK-CIV default is 45°.
    Optional — a value of 0 means "not set / use horizontal FOV".
    """
    elevation_deg: builtins.int
    """
    Elevation angle in whole degrees. Positive = up, negative = down.
    Range -90 to +90. sint32 for varint efficiency on small negatives.
    """
    roll_deg: builtins.int
    """
    Roll (camera tilt) in whole degrees, -180 to +180.
    Optional — use 0 if the sensor doesn't track roll.
    """
    model: builtins.str
    """
    Free-form device model identifier, e.g. "FLIR-Boson-640", "SEEK".
    Optional — empty string means "unknown model" (ATAK-CIV default).
    """
    def __init__(
        self,
        *,
        type: global___SensorFov.SensorType.ValueType = ...,
        azimuth_deg: builtins.int = ...,
        range_m: builtins.int | None = ...,
        fov_horizontal_deg: builtins.int = ...,
        fov_vertical_deg: builtins.int = ...,
        elevation_deg: builtins.int = ...,
        roll_deg: builtins.int = ...,
        model: builtins.str = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["_range_m", b"_range_m", "range_m", b"range_m"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["_range_m", b"_range_m", "azimuth_deg", b"azimuth_deg", "elevation_deg", b"elevation_deg", "fov_horizontal_deg", b"fov_horizontal_deg", "fov_vertical_deg", b"fov_vertical_deg", "model", b"model", "range_m", b"range_m", "roll_deg", b"roll_deg", "type", b"type"]) -> None: ...
    def WhichOneof(self, oneof_group: typing.Literal["_range_m", b"_range_m"]) -> typing.Literal["range_m"] | None: ...

global___SensorFov = SensorFov

@typing.final
class TakTalkMessage(google.protobuf.message.Message):
    """
    TAKTALK chat message payload (CoT type m-t-t).

    TAKTALK is an ATAK plugin for voice + text team messaging. The voice
    audio stream goes over UDP/RTP and is NOT carried by the mesh — only
    the text envelope (this message) is. `from_voice` marks messages sent
    via push-to-talk speech-to-text so receivers can render a mic icon
    next to the text.

    Wire shape inside <event type="m-t-t">/<detail>:
      <callsign>...</callsign>        - mapped to TAKPacketV2.callsign
      <lang>English</lang>            - lang
      <text>...</text>                - text
      <chatroom-id>1</chatroom-id>    - chatroom_id
      <voice/>                        - presence sets from_voice = true
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    TEXT_FIELD_NUMBER: builtins.int
    CHATROOM_ID_FIELD_NUMBER: builtins.int
    LANG_FIELD_NUMBER: builtins.int
    FROM_VOICE_FIELD_NUMBER: builtins.int
    text: builtins.str
    """
    The text body of the TAKTALK message (speech-to-text transcript when
    from_voice = true, typed message otherwise).
    """
    chatroom_id: builtins.str
    """
    TAKTALK chatroom identifier. May be a short id like "1" for the
    default room or a UUID like "30b2755c-c547-44ef-a0cc-cdbd8a15616f"
    for custom rooms (resolved by TakTalkRoomData broadcasts).
    Empty = broadcast room.
    """
    lang: builtins.str
    """
    BCP-47-ish language tag or human-readable name (e.g. "en", "English").
    Empty = unspecified.
    """
    from_voice: builtins.bool
    """
    True when the source CoT carried a <voice/> marker, i.e. the message
    originated as push-to-talk speech-to-text. Lets receivers show a mic
    icon. Proto3 only encodes when true so empty payload cost is 0 bytes.
    """
    def __init__(
        self,
        *,
        text: builtins.str = ...,
        chatroom_id: builtins.str = ...,
        lang: builtins.str = ...,
        from_voice: builtins.bool = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["chatroom_id", b"chatroom_id", "from_voice", b"from_voice", "lang", b"lang", "text", b"text"]) -> None: ...

global___TakTalkMessage = TakTalkMessage

@typing.final
class TakTalkRoomData(google.protobuf.message.Message):
    """
    TAKTALK room/membership broadcast (CoT type y-).

    Announces a TAKTALK chatroom's friendly name and roster so peers can
    resolve room UUIDs (used in TakTalkMessage.chatroom_id and
    GeoChat.room_id) to a display name and participant list. Not a chat
    message itself — these events are emitted by TAKTALK when rooms are
    created or memberships change.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    SENDER_CALLSIGN_FIELD_NUMBER: builtins.int
    ROOM_ID_FIELD_NUMBER: builtins.int
    ROOM_NAME_FIELD_NUMBER: builtins.int
    PARTICIPANTS_FIELD_NUMBER: builtins.int
    sender_callsign: builtins.str
    """
    Callsign of the device broadcasting the room state (typically the
    room owner / latest writer).

    DEPRECATED in v0.3.2: always equals TAKPacketV2.callsign, so the wire
    byte was redundant. Builders stop emitting this field in v0.3.2;
    parsers still read it for one release so v0.3.1-encoded packets decode
    cleanly. To be removed entirely in v0.4.x.
    """
    room_id: builtins.str
    """
    Room UUID, matches TakTalkMessage.chatroom_id / GeoChat.room_id on
    messages routed into this room.
    """
    room_name: builtins.str
    """
    Friendly display name for the room (e.g. "test", "Alpha Team").
    """
    @property
    def participants(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """
        Member callsigns. Wire-encoded as repeated strings; the underlying
        CoT carries them as a single <chatroom-participants>A,B,C</> element
        which parsers split / builders join on ','.
        """

    def __init__(
        self,
        *,
        sender_callsign: builtins.str = ...,
        room_id: builtins.str = ...,
        room_name: builtins.str = ...,
        participants: collections.abc.Iterable[builtins.str] | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["participants", b"participants", "room_id", b"room_id", "room_name", b"room_name", "sender_callsign", b"sender_callsign"]) -> None: ...

global___TakTalkRoomData = TakTalkRoomData

@typing.final
class Marti(google.protobuf.message.Message):
    """
    ATAK directed-routing recipient list (CoT <marti><dest callsign='X'/>…</marti>).

    Present when an event is addressed to specific TAK users rather than the
    broadcast group. TAKTALK gates voice TTS on this element matching the
    receiver's callsign; directed b-t-f chats use it for the same purpose. A
    missing <marti> means "broadcast to all peers", which is the default for
    PLI, alerts, drawings, and most situational-awareness events.

    Carried as repeated strings (not indexes into a per-packet table) because
    the typical event has 1-2 destinations and table overhead would erase the
    savings. Receivers that need the original XML element rebuild it from
    dest_callsign on emit.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    DEST_CALLSIGN_FIELD_NUMBER: builtins.int
    @property
    def dest_callsign(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """
        Recipient callsigns. Order is preserved end-to-end so receivers can show
        primary-vs-cc distinction the same way ATAK does.

        If dest_callsign is [TAKPacketV2.callsign] (self-addressed, unusual but
        legal — e.g. ATAK echoing back to its own room), the builder still emits
        the element so loopback shapes round-trip cleanly.
        """

    def __init__(
        self,
        *,
        dest_callsign: collections.abc.Iterable[builtins.str] | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["dest_callsign", b"dest_callsign"]) -> None: ...

global___Marti = Marti

@typing.final
class TAKPacketV2(google.protobuf.message.Message):
    """
    ATAK v2 packet with expanded CoT field support and zstd dictionary compression.
    Sent on ATAK_PLUGIN_V2 port. The wire payload is:
      [1 byte flags][zstd-compressed TAKPacketV2 protobuf]
    Flags byte: bits 0-5 = dictionary ID, bits 6-7 = reserved.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    COT_TYPE_ID_FIELD_NUMBER: builtins.int
    HOW_FIELD_NUMBER: builtins.int
    CALLSIGN_FIELD_NUMBER: builtins.int
    TEAM_FIELD_NUMBER: builtins.int
    ROLE_FIELD_NUMBER: builtins.int
    LATITUDE_I_FIELD_NUMBER: builtins.int
    LONGITUDE_I_FIELD_NUMBER: builtins.int
    ALTITUDE_FIELD_NUMBER: builtins.int
    SPEED_FIELD_NUMBER: builtins.int
    COURSE_FIELD_NUMBER: builtins.int
    BATTERY_FIELD_NUMBER: builtins.int
    GEO_SRC_FIELD_NUMBER: builtins.int
    ALT_SRC_FIELD_NUMBER: builtins.int
    UID_FIELD_NUMBER: builtins.int
    DEVICE_CALLSIGN_FIELD_NUMBER: builtins.int
    STALE_SECONDS_FIELD_NUMBER: builtins.int
    TAK_VERSION_FIELD_NUMBER: builtins.int
    TAK_DEVICE_FIELD_NUMBER: builtins.int
    TAK_PLATFORM_FIELD_NUMBER: builtins.int
    TAK_OS_FIELD_NUMBER: builtins.int
    ENDPOINT_FIELD_NUMBER: builtins.int
    PHONE_FIELD_NUMBER: builtins.int
    COT_TYPE_STR_FIELD_NUMBER: builtins.int
    REMARKS_FIELD_NUMBER: builtins.int
    ENVIRONMENT_FIELD_NUMBER: builtins.int
    SENSOR_FOV_FIELD_NUMBER: builtins.int
    MARTI_FIELD_NUMBER: builtins.int
    CHAT_FIELD_NUMBER: builtins.int
    AIRCRAFT_FIELD_NUMBER: builtins.int
    RAW_DETAIL_FIELD_NUMBER: builtins.int
    SHAPE_FIELD_NUMBER: builtins.int
    MARKER_FIELD_NUMBER: builtins.int
    RAB_FIELD_NUMBER: builtins.int
    ROUTE_FIELD_NUMBER: builtins.int
    CASEVAC_FIELD_NUMBER: builtins.int
    EMERGENCY_FIELD_NUMBER: builtins.int
    TASK_FIELD_NUMBER: builtins.int
    TAKTALK_FIELD_NUMBER: builtins.int
    TAKTALK_ROOM_FIELD_NUMBER: builtins.int
    cot_type_id: global___CotType.ValueType
    """
    Well-known CoT event type enum.
    Use CotType_Other with cot_type_str for unknown types.
    """
    how: global___CotHow.ValueType
    """
    How the coordinates were generated
    """
    callsign: builtins.str
    """
    Callsign
    """
    team: global___Team.ValueType
    """
    Team color assignment
    """
    role: global___MemberRole.ValueType
    """
    Role of the group member
    """
    latitude_i: builtins.int
    """
    Latitude, multiply by 1e-7 to get degrees in floating point
    """
    longitude_i: builtins.int
    """
    Longitude, multiply by 1e-7 to get degrees in floating point
    """
    altitude: builtins.int
    """
    Altitude in meters (HAE). ATAK's "no altitude" sentinel is hae=9999999.0.

    NOTE: an earlier v0.4.0 attempt made this `optional` to omit the 9999999
    sentinel from the wire, but measurement showed it was net-negative: the
    zstd dictionary already compresses the literal 9999999 to ~nothing, while
    proto3 `optional` forces a genuine 0 m HAE (common on routes/drawings that
    carry hae="0.0" or omit hae → parsed as 0) to encode explicitly (+2 bytes),
    which REGRESSED the worst-case route fixture. Kept as a plain field.
    """
    speed: builtins.int
    """
    Speed in cm/s
    """
    course: builtins.int
    """
    Course in degrees * 100 (0-36000)
    """
    battery: builtins.int
    """
    Battery level 0-100
    """
    geo_src: global___GeoPointSource.ValueType
    """
    Geopoint source
    """
    alt_src: global___GeoPointSource.ValueType
    """
    Altitude source
    """
    uid: builtins.str
    """
    Device UID (UUID string or device ID like "ANDROID-xxxx")
    """
    device_callsign: builtins.str
    """
    Device callsign
    """
    stale_seconds: builtins.int
    """
    Stale time as seconds offset from event time
    """
    tak_version: builtins.str
    """
    TAK client version string
    """
    tak_device: builtins.str
    """
    TAK device model
    """
    tak_platform: builtins.str
    """
    TAK platform (ATAK-CIV, WebTAK, etc.)
    """
    tak_os: builtins.str
    """
    TAK OS version
    """
    endpoint: builtins.str
    """
    Connection endpoint
    """
    phone: builtins.str
    """
    Phone number
    """
    cot_type_str: builtins.str
    """
    CoT event type string, only populated when cot_type_id is CotType_Other
    """
    remarks: builtins.str
    """
    Optional remarks / free-text annotation from the <remarks> element.
    Populated for non-GeoChat payload types (shapes, markers, routes, etc.)
    when the original CoT event carried non-empty remarks text.
    GeoChat messages carry their text in GeoChat.message instead.
    Empty string (proto3 default) means no remarks were present.
    """
    raw_detail: builtins.bytes
    """
    Generic CoT detail XML for unmapped types. Kept as a fallback for CoT
    types not yet promoted to a typed variant; drawings, markers, ranging
    tools, and routes have dedicated variants below and should not land here.
    """
    @property
    def environment(self) -> global___TAKEnvironment:
        """--- Sensor / environment annotations ----------------------------------

        Both fields are OPTIONAL and attach to any payload_variant. They
        describe observed conditions at the emitting station — a PLI with
        environment data, an Aircraft with a sensor cone, a Marker with both.
        Absent by default; presence is signaled by the message being non-null.


        Observed weather conditions (temperature, wind). From <environment>.
        Type is `TAKEnvironment`, not `Environment`, to avoid colliding with
        SwiftUI's `@Environment` property wrapper in iOS consumers.
        """

    @property
    def sensor_fov(self) -> global___SensorFov:
        """
        Sensor field-of-view cone (camera, FLIR, laser, etc.). From <sensor>.
        """

    @property
    def marti(self) -> global___Marti:
        """
        Directed-routing recipient list (CoT <marti><dest callsign='X'/>…</marti>).
        Empty / unset = broadcast to all peers (the default for situational-awareness
        events). Populated for TAKTALK m-t-t, directed b-t-f DMs, and any other CoT
        shape that ATAK addresses to specific recipients. TAKTALK gates voice TTS
        playback on this element matching the receiver's callsign, so dropping it
        silently breaks voice messaging end-to-end.

        See Marti.
        """

    @property
    def chat(self) -> global___GeoChat:
        """
        ATAK GeoChat message
        """

    @property
    def aircraft(self) -> global___AircraftTrack:
        """
        Aircraft track data (ADS-B, military air)
        """

    @property
    def shape(self) -> global___DrawnShape:
        """
        User-drawn tactical graphic: circle, rectangle, polygon, polyline,
        telestration, ranging circle, or bullseye. See DrawnShape.
        """

    @property
    def marker(self) -> global___Marker:
        """
        Fixed point of interest: spot marker, waypoint, checkpoint, 2525
        symbol, or custom icon. See Marker.
        """

    @property
    def rab(self) -> global___RangeAndBearing:
        """
        Range and bearing measurement line. See RangeAndBearing.
        """

    @property
    def route(self) -> global___Route:
        """
        Named route with ordered waypoints and control points. See Route.
        """

    @property
    def casevac(self) -> global___CasevacReport:
        """
        9-line MEDEVAC request. See CasevacReport.
        """

    @property
    def emergency(self) -> global___EmergencyAlert:
        """
        Emergency beacon / 911 alert. See EmergencyAlert.
        """

    @property
    def task(self) -> global___TaskRequest:
        """
        Task / engage request. See TaskRequest.
        """

    @property
    def taktalk(self) -> global___TakTalkMessage:
        """
        TAKTALK chat message (CoT type m-t-t). See TakTalkMessage.
        Voice audio itself rides UDP/RTP outside the mesh; this carries the
        text envelope plus a from_voice marker for receiver UX.
        """

    @property
    def taktalk_room(self) -> global___TakTalkRoomData:
        """
        TAKTALK room/membership broadcast (CoT type y-). See TakTalkRoomData.
        Resolves room UUIDs (used in TakTalkMessage.chatroom_id and
        GeoChat.room_id) to display name + roster on receivers.
        """

    def __init__(
        self,
        *,
        cot_type_id: global___CotType.ValueType = ...,
        how: global___CotHow.ValueType = ...,
        callsign: builtins.str = ...,
        team: global___Team.ValueType = ...,
        role: global___MemberRole.ValueType = ...,
        latitude_i: builtins.int = ...,
        longitude_i: builtins.int = ...,
        altitude: builtins.int = ...,
        speed: builtins.int = ...,
        course: builtins.int = ...,
        battery: builtins.int = ...,
        geo_src: global___GeoPointSource.ValueType = ...,
        alt_src: global___GeoPointSource.ValueType = ...,
        uid: builtins.str = ...,
        device_callsign: builtins.str = ...,
        stale_seconds: builtins.int = ...,
        tak_version: builtins.str = ...,
        tak_device: builtins.str = ...,
        tak_platform: builtins.str = ...,
        tak_os: builtins.str = ...,
        endpoint: builtins.str = ...,
        phone: builtins.str = ...,
        cot_type_str: builtins.str = ...,
        remarks: builtins.str = ...,
        environment: global___TAKEnvironment | None = ...,
        sensor_fov: global___SensorFov | None = ...,
        marti: global___Marti | None = ...,
        chat: global___GeoChat | None = ...,
        aircraft: global___AircraftTrack | None = ...,
        raw_detail: builtins.bytes = ...,
        shape: global___DrawnShape | None = ...,
        marker: global___Marker | None = ...,
        rab: global___RangeAndBearing | None = ...,
        route: global___Route | None = ...,
        casevac: global___CasevacReport | None = ...,
        emergency: global___EmergencyAlert | None = ...,
        task: global___TaskRequest | None = ...,
        taktalk: global___TakTalkMessage | None = ...,
        taktalk_room: global___TakTalkRoomData | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["_environment", b"_environment", "_marti", b"_marti", "_sensor_fov", b"_sensor_fov", "aircraft", b"aircraft", "casevac", b"casevac", "chat", b"chat", "emergency", b"emergency", "environment", b"environment", "marker", b"marker", "marti", b"marti", "payload_variant", b"payload_variant", "rab", b"rab", "raw_detail", b"raw_detail", "route", b"route", "sensor_fov", b"sensor_fov", "shape", b"shape", "taktalk", b"taktalk", "taktalk_room", b"taktalk_room", "task", b"task"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["_environment", b"_environment", "_marti", b"_marti", "_sensor_fov", b"_sensor_fov", "aircraft", b"aircraft", "alt_src", b"alt_src", "altitude", b"altitude", "battery", b"battery", "callsign", b"callsign", "casevac", b"casevac", "chat", b"chat", "cot_type_id", b"cot_type_id", "cot_type_str", b"cot_type_str", "course", b"course", "device_callsign", b"device_callsign", "emergency", b"emergency", "endpoint", b"endpoint", "environment", b"environment", "geo_src", b"geo_src", "how", b"how", "latitude_i", b"latitude_i", "longitude_i", b"longitude_i", "marker", b"marker", "marti", b"marti", "payload_variant", b"payload_variant", "phone", b"phone", "rab", b"rab", "raw_detail", b"raw_detail", "remarks", b"remarks", "role", b"role", "route", b"route", "sensor_fov", b"sensor_fov", "shape", b"shape", "speed", b"speed", "stale_seconds", b"stale_seconds", "tak_device", b"tak_device", "tak_os", b"tak_os", "tak_platform", b"tak_platform", "tak_version", b"tak_version", "taktalk", b"taktalk", "taktalk_room", b"taktalk_room", "task", b"task", "team", b"team", "uid", b"uid"]) -> None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_environment", b"_environment"]) -> typing.Literal["environment"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_marti", b"_marti"]) -> typing.Literal["marti"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_sensor_fov", b"_sensor_fov"]) -> typing.Literal["sensor_fov"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["payload_variant", b"payload_variant"]) -> typing.Literal["chat", "aircraft", "raw_detail", "shape", "marker", "rab", "route", "casevac", "emergency", "task", "taktalk", "taktalk_room"] | None: ...

global___TAKPacketV2 = TAKPacketV2
