// @generated by protoc-gen-es v2.12.0 with parameter "target=ts"
// @generated from file meshtastic/atak.proto (package meshtastic, syntax proto3)
/* eslint-disable */

// trunk-ignore(buf-lint/PACKAGE_DIRECTORY_MATCH) 

import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
import type { Message } from "@bufbuild/protobuf";

/**
 * Describes the file meshtastic/atak.proto.
 */
export const file_meshtastic_atak: GenFile = /*@__PURE__*/
  fileDesc(" ");

/**
 *
 * Packets for the official ATAK Plugin
 *
 * @generated from message meshtastic.TAKPacket
 */
export type TAKPacket = Message<"meshtastic.TAKPacket"> & {
  /**
   *
   * Are the payloads strings compressed for LoRA transport?
   *
   * @generated from field: bool is_compressed = 1;
   */
  isCompressed: boolean;

  /**
   *
   * The contact / callsign for ATAK user
   *
   * @generated from field: meshtastic.Contact contact = 2;
   */
  contact?: Contact | undefined;

  /**
   *
   * The group for ATAK user
   *
   * @generated from field: meshtastic.Group group = 3;
   */
  group?: Group | undefined;

  /**
   *
   * The status of the ATAK EUD
   *
   * @generated from field: meshtastic.Status status = 4;
   */
  status?: Status | undefined;

  /**
   *
   * The payload of the packet
   *
   * @generated from oneof meshtastic.TAKPacket.payload_variant
   */
  payloadVariant: {
    /**
     *
     * TAK position report
     *
     * @generated from field: meshtastic.PLI pli = 5;
     */
    value: PLI;
    case: "pli";
  } | {
    /**
     *
     * ATAK GeoChat message
     *
     * @generated from field: meshtastic.GeoChat chat = 6;
     */
    value: GeoChat;
    case: "chat";
  } | {
    /**
     *
     * Generic CoT detail XML
     * May be compressed / truncated by the sender (EUD)
     *
     * @generated from field: bytes detail = 7;
     */
    value: Uint8Array;
    case: "detail";
  } | { case: undefined; value?: undefined };
};

/**
 * Describes the message meshtastic.TAKPacket.
 * Use `create(TAKPacketSchema)` to create a new message.
 */
export const TAKPacketSchema: GenMessage<TAKPacket> = /*@__PURE__*/
  messageDesc(file_meshtastic_atak, 0);

/**
 *
 * ATAK GeoChat message
 *
 * @generated from message meshtastic.GeoChat
 */
export type GeoChat = Message<"meshtastic.GeoChat"> & {
  /**
   *
   * The text message. Empty for receipts.
   *
   * @generated from field: string message = 1;
   */
  message: string;

  /**
   *
   * Uid recipient of the message
   *
   * @generated from field: optional string to = 2;
   */
  to?: string | undefined;

  /**
   *
   * Callsign of the recipient for the message
   *
   * @generated from field: optional string to_callsign = 3;
   */
  toCallsign?: string | undefined;

  /**
   *
   * 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.
   *
   * @generated from field: string receipt_for_uid = 4;
   */
  receiptForUid: string;

  /**
   *
   * Receipt kind discriminator. See ReceiptType doc. Default ReceiptType_None
   * means this is a regular chat message, not a receipt.
   *
   * @generated from field: meshtastic.GeoChat.ReceiptType receipt_type = 5;
   */
  receiptType: GeoChat_ReceiptType;

  /**
   *
   * BCP-47-ish language tag or human-readable name (e.g. "en", "English")
   * that the originator's TAKTALK plugin recorded for the message.
   *
   * @generated from field: optional string lang = 6;
   */
  lang?: string | undefined;

  /**
   *
   * 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.
   *
   * @generated from field: optional string room_id = 7;
   */
  roomId?: string | undefined;

  /**
   *
   * 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.
   *
   * @generated from field: optional string voice_profile_id = 8;
   */
  voiceProfileId?: string | undefined;
};

/**
 * Describes the message meshtastic.GeoChat.
 * Use `create(GeoChatSchema)` to create a new message.
 */
export const GeoChatSchema: GenMessage<GeoChat> = /*@__PURE__*/
  messageDesc(file_meshtastic_atak, 1);

/**
 *
 * 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.
 *
 * @generated from enum meshtastic.GeoChat.ReceiptType
 */
export enum GeoChat_ReceiptType {
  /**
   * normal chat message
   *
   * @generated from enum value: ReceiptType_None = 0;
   */
  ReceiptType_None = 0,

  /**
   * b-t-f-d delivered receipt
   *
   * @generated from enum value: ReceiptType_Delivered = 1;
   */
  ReceiptType_Delivered = 1,

  /**
   * b-t-f-r read receipt
   *
   * @generated from enum value: ReceiptType_Read = 2;
   */
  ReceiptType_Read = 2,
}

/**
 * Describes the enum meshtastic.GeoChat.ReceiptType.
 */
export const GeoChat_ReceiptTypeSchema: GenEnum<GeoChat_ReceiptType> = /*@__PURE__*/
  enumDesc(file_meshtastic_atak, 1, 0);

/**
 *
 * ATAK Group
 * <__group role='Team Member' name='Cyan'/>
 *
 * @generated from message meshtastic.Group
 */
export type Group = Message<"meshtastic.Group"> & {
  /**
   *
   * Role of the group member
   *
   * @generated from field: meshtastic.MemberRole role = 1;
   */
  role: MemberRole;

  /**
   *
   * Team (color)
   * Default Cyan
   *
   * @generated from field: meshtastic.Team team = 2;
   */
  team: Team;
};

/**
 * Describes the message meshtastic.Group.
 * Use `create(GroupSchema)` to create a new message.
 */
export const GroupSchema: GenMessage<Group> = /*@__PURE__*/
  messageDesc(file_meshtastic_atak, 2);

/**
 *
 * ATAK EUD Status
 * <status battery='100' />
 *
 * @generated from message meshtastic.Status
 */
export type Status = Message<"meshtastic.Status"> & {
  /**
   *
   * Battery level
   *
   * @generated from field: uint32 battery = 1;
   */
  battery: number;
};

/**
 * Describes the message meshtastic.Status.
 * Use `create(StatusSchema)` to create a new message.
 */
export const StatusSchema: GenMessage<Status> = /*@__PURE__*/
  messageDesc(file_meshtastic_atak, 3);

/**
 *
 * ATAK Contact
 * <contact endpoint='0.0.0.0:4242:tcp' phone='+12345678' callsign='FALKE'/>
 *
 * @generated from message meshtastic.Contact
 */
export type Contact = Message<"meshtastic.Contact"> & {
  /**
   *
   * Callsign
   *
   * @generated from field: string callsign = 1;
   */
  callsign: string;

  /**
   *
   * Device callsign
   *
   *
   * IP address of endpoint in integer form (0.0.0.0 default)
   *
   * @generated from field: string device_callsign = 2;
   */
  deviceCallsign: string;
};

/**
 * Describes the message meshtastic.Contact.
 * Use `create(ContactSchema)` to create a new message.
 */
export const ContactSchema: GenMessage<Contact> = /*@__PURE__*/
  messageDesc(file_meshtastic_atak, 4);

/**
 *
 * Position Location Information from ATAK
 *
 * @generated from message meshtastic.PLI
 */
export type PLI = Message<"meshtastic.PLI"> & {
  /**
   *
   * The new preferred location encoding, multiply by 1e-7 to get degrees
   * in floating point
   *
   * @generated from field: sfixed32 latitude_i = 1;
   */
  latitudeI: number;

  /**
   *
   * The new preferred location encoding, multiply by 1e-7 to get degrees
   * in floating point
   *
   * @generated from field: sfixed32 longitude_i = 2;
   */
  longitudeI: number;

  /**
   *
   * Altitude (ATAK prefers HAE)
   *
   * @generated from field: int32 altitude = 3;
   */
  altitude: number;

  /**
   *
   * Speed
   *
   * @generated from field: uint32 speed = 4;
   */
  speed: number;

  /**
   *
   * Course in degrees
   *
   * @generated from field: uint32 course = 5;
   */
  course: number;
};

/**
 * Describes the message meshtastic.PLI.
 * Use `create(PLISchema)` to create a new message.
 */
export const PLISchema: GenMessage<PLI> = /*@__PURE__*/
  messageDesc(file_meshtastic_atak, 5);

/**
 *
 * Aircraft track information from ADS-B or military air tracking.
 * Covers the majority of observed real-world CoT traffic.
 *
 * @generated from message meshtastic.AircraftTrack
 */
export type AircraftTrack = Message<"meshtastic.AircraftTrack"> & {
  /**
   *
   * ICAO hex identifier (e.g. "AD237C")
   *
   * @generated from field: string icao = 1;
   */
  icao: string;

  /**
   *
   * Aircraft registration (e.g. "N946AK")
   *
   * @generated from field: string registration = 2;
   */
  registration: string;

  /**
   *
   * Flight number/callsign (e.g. "ASA864")
   *
   * @generated from field: string flight = 3;
   */
  flight: string;

  /**
   *
   * ICAO aircraft type designator (e.g. "B39M")
   *
   * @generated from field: string aircraft_type = 4;
   */
  aircraftType: string;

  /**
   *
   * Transponder squawk code (0-7777 octal)
   *
   * @generated from field: uint32 squawk = 5;
   */
  squawk: number;

  /**
   *
   * ADS-B emitter category (e.g. "A3")
   *
   * @generated from field: string category = 6;
   */
  category: string;

  /**
   *
   * Received signal strength * 10 (e.g. -194 for -19.4 dBm)
   *
   * @generated from field: sint32 rssi_x10 = 7;
   */
  rssiX10: number;

  /**
   *
   * Whether receiver has GPS fix
   *
   * @generated from field: bool gps = 8;
   */
  gps: boolean;

  /**
   *
   * CoT host ID for source attribution
   *
   * @generated from field: string cot_host_id = 9;
   */
  cotHostId: string;
};

/**
 * Describes the message meshtastic.AircraftTrack.
 * Use `create(AircraftTrackSchema)` to create a new message.
 */
export const AircraftTrackSchema: GenMessage<AircraftTrack> = /*@__PURE__*/
  messageDesc(file_meshtastic_atak, 6);

/**
 *
 * 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.
 *
 * @generated from message meshtastic.CotGeoPoint
 */
export type CotGeoPoint = Message<"meshtastic.CotGeoPoint"> & {
  /**
   *
   * Latitude delta from TAKPacketV2.latitude_i, in 1e-7 degree units.
   * Add to the enclosing event's latitude_i to recover the absolute latitude.
   *
   * @generated from field: sint32 lat_delta_i = 1;
   */
  latDeltaI: number;

  /**
   *
   * Longitude delta from TAKPacketV2.longitude_i, in 1e-7 degree units.
   *
   * @generated from field: sint32 lon_delta_i = 2;
   */
  lonDeltaI: number;
};

/**
 * Describes the message meshtastic.CotGeoPoint.
 * Use `create(CotGeoPointSchema)` to create a new message.
 */
export const CotGeoPointSchema: GenMessage<CotGeoPoint> = /*@__PURE__*/
  messageDesc(file_meshtastic_atak, 7);

/**
 *
 * 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.
 *
 * @generated from message meshtastic.DrawnShape
 */
export type DrawnShape = Message<"meshtastic.DrawnShape"> & {
  /**
   *
   * Shape kind (circle, rectangle, freeform, etc.)
   *
   * @generated from field: meshtastic.DrawnShape.Kind kind = 1;
   */
  kind: DrawnShape_Kind;

  /**
   *
   * Explicit stroke/fill/both discriminator. See StyleMode doc.
   *
   * @generated from field: meshtastic.DrawnShape.StyleMode style = 2;
   */
  style: DrawnShape_StyleMode;

  /**
   *
   * Ellipse major radius in centimeters. 0 for non-ellipse kinds.
   *
   * @generated from field: uint32 major_cm = 3;
   */
  majorCm: number;

  /**
   *
   * Ellipse minor radius in centimeters. 0 for non-ellipse kinds.
   *
   * @generated from field: uint32 minor_cm = 4;
   */
  minorCm: number;

  /**
   *
   * 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.
   *
   * @generated from field: uint32 angle_deg = 5;
   */
  angleDeg: number;

  /**
   *
   * 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.
   *
   * @generated from field: meshtastic.Team stroke_color = 6;
   */
  strokeColor: Team;

  /**
   *
   * 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.
   *
   * @generated from field: fixed32 stroke_argb = 7;
   */
  strokeArgb: number;

  /**
   *
   * Stroke weight in tenths of a unit (e.g. 30 = 3.0). Typical ATAK
   * range 10..60.
   *
   * @generated from field: uint32 stroke_weight_x10 = 8;
   */
  strokeWeightX10: number;

  /**
   *
   * Fill color as a named palette entry. See stroke_color docs.
   * Valid only when style is FillOnly or StrokeAndFill.
   *
   * @generated from field: meshtastic.Team fill_color = 9;
   */
  fillColor: Team;

  /**
   *
   * Fill color exact ARGB fallback. See stroke_argb docs.
   *
   * @generated from field: fixed32 fill_argb = 10;
   */
  fillArgb: number;

  /**
   *
   * Whether labels are rendered on this shape.
   *
   * @generated from field: bool labels_on = 11;
   */
  labelsOn: boolean;

  /**
   * @generated from field: repeated sint32 vertex_lat_deltas = 18;
   */
  vertexLatDeltas: number[];

  /**
   * @generated from field: repeated sint32 vertex_lon_deltas = 19;
   */
  vertexLonDeltas: number[];

  /**
   *
   * True if the sender truncated the vertex columns to fit the pool.
   *
   * --- Bullseye-only fields. All ignored unless kind == Kind_Bullseye. ---
   *
   * @generated from field: bool truncated = 13;
   */
  truncated: boolean;

  /**
   *
   * Bullseye distance in meters * 10 (e.g. 3285 = 328.5 m). 0 = unset.
   *
   * @generated from field: uint32 bullseye_distance_dm = 14;
   */
  bullseyeDistanceDm: number;

  /**
   *
   * Bullseye bearing reference: 0 unset, 1 Magnetic, 2 True, 3 Grid.
   *
   * @generated from field: uint32 bullseye_bearing_ref = 15;
   */
  bullseyeBearingRef: number;

  /**
   *
   * Bullseye attribute bit flags:
   *   bit 0: rangeRingVisible
   *   bit 1: hasRangeRings
   *   bit 2: edgeToCenter
   *   bit 3: mils
   *
   * @generated from field: uint32 bullseye_flags = 16;
   */
  bullseyeFlags: number;

  /**
   *
   * Bullseye reference UID (anchor marker). Empty = anchor is self.
   *
   * @generated from field: string bullseye_uid_ref = 17;
   */
  bullseyeUidRef: string;
};

/**
 * Describes the message meshtastic.DrawnShape.
 * Use `create(DrawnShapeSchema)` to create a new message.
 */
export const DrawnShapeSchema: GenMessage<DrawnShape> = /*@__PURE__*/
  messageDesc(file_meshtastic_atak, 8);

/**
 *
 * Shape kind discriminator. Drives receiver rendering and also controls
 * which optional fields below are meaningful.
 *
 * @generated from enum meshtastic.DrawnShape.Kind
 */
export enum DrawnShape_Kind {
  /**
   *
   * Unspecified (do not use on the wire)
   *
   * @generated from enum value: Kind_Unspecified = 0;
   */
  Unspecified = 0,

  /**
   *
   * u-d-c-c: User-drawn circle (uses major/minor/angle, anchor = event point)
   *
   * @generated from enum value: Kind_Circle = 1;
   */
  Circle = 1,

  /**
   *
   * u-d-r: User-drawn rectangle (uses vertices = 4 corners)
   *
   * @generated from enum value: Kind_Rectangle = 2;
   */
  Rectangle = 2,

  /**
   *
   * u-d-f: User-drawn polyline (uses vertices, not closed)
   *
   * @generated from enum value: Kind_Freeform = 3;
   */
  Freeform = 3,

  /**
   *
   * u-d-f-m: Freehand telestration / annotation (uses vertices, may be truncated)
   *
   * @generated from enum value: Kind_Telestration = 4;
   */
  Telestration = 4,

  /**
   *
   * u-d-p: Closed polygon (uses vertices, implicitly closed)
   *
   * @generated from enum value: Kind_Polygon = 5;
   */
  Polygon = 5,

  /**
   *
   * u-r-b-c-c: Ranging circle (major/minor/angle, stroke + optional fill)
   *
   * @generated from enum value: Kind_RangingCircle = 6;
   */
  RangingCircle = 6,

  /**
   *
   * u-r-b-bullseye: Bullseye ring with range rings and bearing reference
   *
   * @generated from enum value: Kind_Bullseye = 7;
   */
  Bullseye = 7,

  /**
   *
   * 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).
   *
   * @generated from enum value: Kind_Ellipse = 8;
   */
  Ellipse = 8,

  /**
   *
   * u-d-v: 2D vehicle outline drawn on the map. Vertices carry the
   * outline polygon; receivers draw it as a filled polygon.
   *
   * @generated from enum value: Kind_Vehicle2D = 9;
   */
  Vehicle2D = 9,

  /**
   *
   * u-d-v-m: 3D vehicle model reference. Same vertex polygon as
   * Kind_Vehicle2D; receivers that support 3D rendering extrude it.
   *
   * @generated from enum value: Kind_Vehicle3D = 10;
   */
  Vehicle3D = 10,
}

/**
 * Describes the enum meshtastic.DrawnShape.Kind.
 */
export const DrawnShape_KindSchema: GenEnum<DrawnShape_Kind> = /*@__PURE__*/
  enumDesc(file_meshtastic_atak, 8, 0);

/**
 *
 * 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.
 *
 * @generated from enum meshtastic.DrawnShape.StyleMode
 */
export enum DrawnShape_StyleMode {
  /**
   *
   * Unspecified — receiver infers from which color fields are non-zero.
   *
   * @generated from enum value: StyleMode_Unspecified = 0;
   */
  StyleMode_Unspecified = 0,

  /**
   *
   * Stroke only. No <fillColor> in the source XML. Used for polylines,
   * ranging lines, bullseye rings.
   *
   * @generated from enum value: StyleMode_StrokeOnly = 1;
   */
  StyleMode_StrokeOnly = 1,

  /**
   *
   * Fill only. No <strokeColor> in the source XML. Rare but valid in
   * ATAK (solid region with no outline).
   *
   * @generated from enum value: StyleMode_FillOnly = 2;
   */
  StyleMode_FillOnly = 2,

  /**
   *
   * Both stroke and fill present. Closed shapes: circle, rectangle,
   * polygon, ranging circle.
   *
   * @generated from enum value: StyleMode_StrokeAndFill = 3;
   */
  StyleMode_StrokeAndFill = 3,
}

/**
 * Describes the enum meshtastic.DrawnShape.StyleMode.
 */
export const DrawnShape_StyleModeSchema: GenEnum<DrawnShape_StyleMode> = /*@__PURE__*/
  enumDesc(file_meshtastic_atak, 8, 1);

/**
 *
 * 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.
 *
 * @generated from message meshtastic.Marker
 */
export type Marker = Message<"meshtastic.Marker"> & {
  /**
   *
   * Marker kind
   *
   * @generated from field: meshtastic.Marker.Kind kind = 1;
   */
  kind: Marker_Kind;

  /**
   *
   * Marker color as a named palette entry. If Unspecifed_Color, the exact
   * ARGB is in color_argb.
   *
   * @generated from field: meshtastic.Team color = 2;
   */
  color: Team;

  /**
   *
   * Marker color exact ARGB bit pattern. Always populated on the wire.
   *
   * @generated from field: fixed32 color_argb = 3;
   */
  colorArgb: number;

  /**
   *
   * Status readiness flag (ATAK <status readiness="true"/>).
   *
   * @generated from field: bool readiness = 4;
   */
  readiness: boolean;

  /**
   *
   * 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.
   *
   * @generated from field: string parent_uid = 5;
   */
  parentUid: string;

  /**
   *
   * Parent CoT type (e.g. "a-f-G-U-C"). Usually the parent TAK user's type.
   *
   * @generated from field: string parent_type = 6;
   */
  parentType: string;

  /**
   *
   * Parent callsign (e.g. "HOPE").
   *
   * @generated from field: string parent_callsign = 7;
   */
  parentCallsign: string;

  /**
   *
   * 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.
   *
   * @generated from field: string iconset = 8;
   */
  iconset: string;
};

/**
 * Describes the message meshtastic.Marker.
 * Use `create(MarkerSchema)` to create a new message.
 */
export const MarkerSchema: GenMessage<Marker> = /*@__PURE__*/
  messageDesc(file_meshtastic_atak, 9);

/**
 *
 * 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).
 *
 * @generated from enum meshtastic.Marker.Kind
 */
export enum Marker_Kind {
  /**
   *
   * Unspecified — fall back to TAKPacketV2.cot_type_id
   *
   * @generated from enum value: Kind_Unspecified = 0;
   */
  Unspecified = 0,

  /**
   *
   * b-m-p-s-m: Spot map marker
   *
   * @generated from enum value: Kind_Spot = 1;
   */
  Spot = 1,

  /**
   *
   * b-m-p-w: Route waypoint
   *
   * @generated from enum value: Kind_Waypoint = 2;
   */
  Waypoint = 2,

  /**
   *
   * b-m-p-c: Checkpoint
   *
   * @generated from enum value: Kind_Checkpoint = 3;
   */
  Checkpoint = 3,

  /**
   *
   * b-m-p-s-p-i / b-m-p-s-p-loc: Self-position marker
   *
   * @generated from enum value: Kind_SelfPosition = 4;
   */
  SelfPosition = 4,

  /**
   *
   * 2525B/C military symbol (iconsetpath = COT_MAPPING_2525B/...)
   *
   * @generated from enum value: Kind_Symbol2525 = 5;
   */
  Symbol2525 = 5,

  /**
   *
   * COT_MAPPING_SPOTMAP icon (e.g. colored dot)
   *
   * @generated from enum value: Kind_SpotMap = 6;
   */
  SpotMap = 6,

  /**
   *
   * Custom icon set (UUID/GroupName/filename.png)
   *
   * @generated from enum value: Kind_CustomIcon = 7;
   */
  CustomIcon = 7,

  /**
   *
   * b-m-p-w-GOTO: Go To / bloodhound navigation waypoint.
   *
   * @generated from enum value: Kind_GoToPoint = 8;
   */
  GoToPoint = 8,

  /**
   *
   * b-m-p-c-ip: Initial point (mission planning control point).
   *
   * @generated from enum value: Kind_InitialPoint = 9;
   */
  InitialPoint = 9,

  /**
   *
   * b-m-p-c-cp: Contact point (mission planning control point).
   *
   * @generated from enum value: Kind_ContactPoint = 10;
   */
  ContactPoint = 10,

  /**
   *
   * b-m-p-s-p-op: Observation post.
   *
   * @generated from enum value: Kind_ObservationPost = 11;
   */
  ObservationPost = 11,

  /**
   *
   * 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.
   *
   * @generated from enum value: Kind_ImageMarker = 12;
   */
  ImageMarker = 12,
}

/**
 * Describes the enum meshtastic.Marker.Kind.
 */
export const Marker_KindSchema: GenEnum<Marker_Kind> = /*@__PURE__*/
  enumDesc(file_meshtastic_atak, 9, 0);

/**
 *
 * 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.
 *
 * @generated from message meshtastic.RangeAndBearing
 */
export type RangeAndBearing = Message<"meshtastic.RangeAndBearing"> & {
  /**
   *
   * Target/anchor endpoint (delta-encoded from TAKPacketV2.latitude_i/longitude_i).
   *
   * @generated from field: meshtastic.CotGeoPoint anchor = 1;
   */
  anchor?: CotGeoPoint | undefined;

  /**
   *
   * Anchor UID (from <link uid="anchor-1"/>). Empty = free-standing.
   *
   * @generated from field: string anchor_uid = 2;
   */
  anchorUid: string;

  /**
   *
   * Range in centimeters (value * 100). Range 0..4294 km.
   *
   * @generated from field: uint32 range_cm = 3;
   */
  rangeCm: number;

  /**
   *
   * Bearing in degrees * 100 (0..36000).
   *
   * @generated from field: uint32 bearing_cdeg = 4;
   */
  bearingCdeg: number;

  /**
   *
   * Stroke color as a Team palette entry. See DrawnShape.stroke_color doc.
   *
   * @generated from field: meshtastic.Team stroke_color = 5;
   */
  strokeColor: Team;

  /**
   *
   * Stroke color exact ARGB fallback.
   *
   * @generated from field: fixed32 stroke_argb = 6;
   */
  strokeArgb: number;

  /**
   *
   * Stroke weight * 10 (e.g. 30 = 3.0).
   *
   * @generated from field: uint32 stroke_weight_x10 = 7;
   */
  strokeWeightX10: number;
};

/**
 * Describes the message meshtastic.RangeAndBearing.
 * Use `create(RangeAndBearingSchema)` to create a new message.
 */
export const RangeAndBearingSchema: GenMessage<RangeAndBearing> = /*@__PURE__*/
  messageDesc(file_meshtastic_atak, 10);

/**
 *
 * 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`.
 *
 * @generated from message meshtastic.Route
 */
export type Route = Message<"meshtastic.Route"> & {
  /**
   *
   * Travel method
   *
   * @generated from field: meshtastic.Route.Method method = 1;
   */
  method: Route_Method;

  /**
   *
   * Direction (infil/exfil)
   *
   * @generated from field: meshtastic.Route.Direction direction = 2;
   */
  direction: Route_Direction;

  /**
   *
   * Waypoint name prefix (e.g. "CP").
   *
   * @generated from field: string prefix = 3;
   */
  prefix: string;

  /**
   *
   * Stroke weight * 10 (e.g. 30 = 3.0). 0 = default.
   *
   * @generated from field: uint32 stroke_weight_x10 = 4;
   */
  strokeWeightX10: number;

  /**
   *
   * Ordered list of route control points. Capped at 16.
   *
   * @generated from field: repeated meshtastic.Route.Link links = 5;
   */
  links: Route_Link[];

  /**
   *
   * True if the sender truncated `links` to fit the pool.
   *
   * @generated from field: bool truncated = 6;
   */
  truncated: boolean;
};

/**
 * Describes the message meshtastic.Route.
 * Use `create(RouteSchema)` to create a new message.
 */
export const RouteSchema: GenMessage<Route> = /*@__PURE__*/
  messageDesc(file_meshtastic_atak, 11);

/**
 *
 * Route waypoint or control point. Each link corresponds to one ATAK
 * <link type=... point=...> entry inside the b-m-r event.
 *
 * @generated from message meshtastic.Route.Link
 */
export type Route_Link = Message<"meshtastic.Route.Link"> & {
  /**
   *
   * Waypoint position (delta-encoded from TAKPacketV2.latitude_i/longitude_i).
   *
   * @generated from field: meshtastic.CotGeoPoint point = 1;
   */
  point?: CotGeoPoint | undefined;

  /**
   *
   * Optional UID (empty = receiver derives).
   *
   * @generated from field: string uid = 2;
   */
  uid: string;

  /**
   *
   * Optional display callsign (e.g. "CP1"). Empty for unnamed control points.
   *
   * @generated from field: string callsign = 3;
   */
  callsign: string;

  /**
   *
   * Link role: 0 = waypoint (b-m-p-w), 1 = checkpoint (b-m-p-c).
   *
   * @generated from field: uint32 link_type = 4;
   */
  linkType: number;
};

/**
 * Describes the message meshtastic.Route.Link.
 * Use `create(Route_LinkSchema)` to create a new message.
 */
export const Route_LinkSchema: GenMessage<Route_Link> = /*@__PURE__*/
  messageDesc(file_meshtastic_atak, 11, 0);

/**
 *
 * Travel method for the route.
 *
 * @generated from enum meshtastic.Route.Method
 */
export enum Route_Method {
  /**
   *
   * Unspecified / unknown
   *
   * @generated from enum value: Method_Unspecified = 0;
   */
  Unspecified = 0,

  /**
   *
   * Driving / vehicle
   *
   * @generated from enum value: Method_Driving = 1;
   */
  Driving = 1,

  /**
   *
   * Walking / foot
   *
   * @generated from enum value: Method_Walking = 2;
   */
  Walking = 2,

  /**
   *
   * Flying
   *
   * @generated from enum value: Method_Flying = 3;
   */
  Flying = 3,

  /**
   *
   * Swimming (individual)
   *
   * @generated from enum value: Method_Swimming = 4;
   */
  Swimming = 4,

  /**
   *
   * Watercraft (boat)
   *
   * @generated from enum value: Method_Watercraft = 5;
   */
  Watercraft = 5,
}

/**
 * Describes the enum meshtastic.Route.Method.
 */
export const Route_MethodSchema: GenEnum<Route_Method> = /*@__PURE__*/
  enumDesc(file_meshtastic_atak, 11, 0);

/**
 *
 * Route direction (infil = ingress, exfil = egress).
 *
 * @generated from enum meshtastic.Route.Direction
 */
export enum Route_Direction {
  /**
   *
   * Unspecified
   *
   * @generated from enum value: Direction_Unspecified = 0;
   */
  Unspecified = 0,

  /**
   *
   * Infiltration (ingress)
   *
   * @generated from enum value: Direction_Infil = 1;
   */
  Infil = 1,

  /**
   *
   * Exfiltration (egress)
   *
   * @generated from enum value: Direction_Exfil = 2;
   */
  Exfil = 2,
}

/**
 * Describes the enum meshtastic.Route.Direction.
 */
export const Route_DirectionSchema: GenEnum<Route_Direction> = /*@__PURE__*/
  enumDesc(file_meshtastic_atak, 11, 1);

/**
 *
 * 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.
 *
 * @generated from message meshtastic.CasevacReport
 */
export type CasevacReport = Message<"meshtastic.CasevacReport"> & {
  /**
   *
   * Line 3: precedence / urgency.
   *
   * @generated from field: meshtastic.CasevacReport.Precedence precedence = 1;
   */
  precedence: CasevacReport_Precedence;

  /**
   *
   * Line 4: special equipment required, as a bitfield.
   *   bit 0: none
   *   bit 1: hoist
   *   bit 2: extraction equipment
   *   bit 3: ventilator
   *   bit 4: blood
   *
   * @generated from field: uint32 equipment_flags = 2;
   */
  equipmentFlags: number;

  /**
   *
   * Line 5: number of litter (stretcher-bound) patients.
   *
   * @generated from field: uint32 litter_patients = 3;
   */
  litterPatients: number;

  /**
   *
   * Line 5: number of ambulatory (walking-wounded) patients.
   *
   * @generated from field: uint32 ambulatory_patients = 4;
   */
  ambulatoryPatients: number;

  /**
   *
   * Line 6: security situation at the PZ.
   *
   * @generated from field: meshtastic.CasevacReport.Security security = 5;
   */
  security: CasevacReport_Security;

  /**
   *
   * Line 7: HLZ marking method.
   *
   * @generated from field: meshtastic.CasevacReport.HlzMarking hlz_marking = 6;
   */
  hlzMarking: CasevacReport_HlzMarking;

  /**
   *
   * Line 7 supplementary: short free-text describing the zone marker
   * (e.g. "Green smoke", "VS-17 panel west"). Capped tight in options.
   *
   * @generated from field: string zone_marker = 7;
   */
  zoneMarker: string;

  /**
   * --- Line 8: patient nationality counts ---
   *
   * @generated from field: uint32 us_military = 8;
   */
  usMilitary: number;

  /**
   * @generated from field: uint32 us_civilian = 9;
   */
  usCivilian: number;

  /**
   * @generated from field: uint32 non_us_military = 10;
   */
  nonUsMilitary: number;

  /**
   * @generated from field: uint32 non_us_civilian = 11;
   */
  nonUsCivilian: number;

  /**
   * enemy prisoner of war
   *
   * @generated from field: uint32 epw = 12;
   */
  epw: number;

  /**
   * @generated from field: uint32 child = 13;
   */
  child: number;

  /**
   *
   * 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
   *
   * @generated from field: uint32 terrain_flags = 14;
   */
  terrainFlags: number;

  /**
   *
   * Line 2: radio frequency / callsign metadata (e.g. "38.90 Mhz" or
   * "Victor 6"). Capped tight in options.
   *
   * @generated from field: string frequency = 15;
   */
  frequency: string;

  /**
   *
   * 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.
   *
   * @generated from field: string title = 16;
   */
  title: string;

  /**
   *
   * 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.
   *
   * @generated from field: string medline_remarks = 17;
   */
  medlineRemarks: string;

  /**
   *
   * 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.
   *
   * @generated from field: uint32 urgent_count = 18;
   */
  urgentCount: number;

  /**
   * @generated from field: uint32 urgent_surgical_count = 19;
   */
  urgentSurgicalCount: number;

  /**
   * @generated from field: uint32 priority_count = 20;
   */
  priorityCount: number;

  /**
   * @generated from field: uint32 routine_count = 21;
   */
  routineCount: number;

  /**
   * @generated from field: uint32 convenience_count = 22;
   */
  convenienceCount: number;

  /**
   *
   * Line 4 supplementary: free-text description of non-standard equipment
   * (e.g. "Blood warmer"). Pairs with the `equipment_flags` bitfield.
   *
   * @generated from field: string equipment_detail = 23;
   */
  equipmentDetail: string;

  /**
   *
   * 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.
   *
   * @generated from field: string zone_protected_coord = 24;
   */
  zoneProtectedCoord: string;

  /**
   *
   * Line 9 supplementary: slope direction (e.g. "N", "NE", "SSW") when
   * `terrain_flags` bit 0 (slope) is set.
   *
   * @generated from field: string terrain_slope_dir = 25;
   */
  terrainSlopeDir: string;

  /**
   *
   * 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.
   *
   * @generated from field: string terrain_other_detail = 26;
   */
  terrainOtherDetail: string;

  /**
   *
   * 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.
   *
   * @generated from field: string marked_by = 27;
   */
  markedBy: string;

  /**
   *
   * Nearby obstacles on the approach (e.g. "Power lines north of HLZ").
   *
   * @generated from field: string obstacles = 28;
   */
  obstacles: string;

  /**
   *
   * Wind direction and speed (e.g. "270 at 12 kts").
   *
   * @generated from field: string winds_are_from = 29;
   */
  windsAreFrom: string;

  /**
   *
   * Friendly forces posture near the pickup zone
   * (e.g. "Squad east of HLZ").
   *
   * @generated from field: string friendlies = 30;
   */
  friendlies: string;

  /**
   *
   * Known or suspected enemy positions near the pickup zone
   * (e.g. "Possible enemy on south ridge").
   *
   * @generated from field: string enemy = 31;
   */
  enemy: string;

  /**
   *
   * Free-text description of the HLZ itself
   * (e.g. "Primary HLZ is soccer field").
   *
   * @generated from field: string hlz_remarks = 32;
   */
  hlzRemarks: string;

  /**
   *
   * 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.
   *
   * @generated from field: repeated meshtastic.ZMistEntry zmist = 33;
   */
  zmist: ZMistEntry[];
};

/**
 * Describes the message meshtastic.CasevacReport.
 * Use `create(CasevacReportSchema)` to create a new message.
 */
export const CasevacReportSchema: GenMessage<CasevacReport> = /*@__PURE__*/
  messageDesc(file_meshtastic_atak, 12);

/**
 *
 * Line 3: precedence / urgency.
 *
 * @generated from enum meshtastic.CasevacReport.Precedence
 */
export enum CasevacReport_Precedence {
  /**
   * @generated from enum value: Precedence_Unspecified = 0;
   */
  Unspecified = 0,

  /**
   * A - immediate, life-threatening
   *
   * @generated from enum value: Precedence_Urgent = 1;
   */
  Urgent = 1,

  /**
   * B - needs surgery
   *
   * @generated from enum value: Precedence_UrgentSurgical = 2;
   */
  UrgentSurgical = 2,

  /**
   * C - within 4 hours
   *
   * @generated from enum value: Precedence_Priority = 3;
   */
  Priority = 3,

  /**
   * D - within 24 hours
   *
   * @generated from enum value: Precedence_Routine = 4;
   */
  Routine = 4,

  /**
   * E - convenience
   *
   * @generated from enum value: Precedence_Convenience = 5;
   */
  Convenience = 5,
}

/**
 * Describes the enum meshtastic.CasevacReport.Precedence.
 */
export const CasevacReport_PrecedenceSchema: GenEnum<CasevacReport_Precedence> = /*@__PURE__*/
  enumDesc(file_meshtastic_atak, 12, 0);

/**
 *
 * Line 7: HLZ marking method.
 *
 * @generated from enum meshtastic.CasevacReport.HlzMarking
 */
export enum CasevacReport_HlzMarking {
  /**
   * @generated from enum value: HlzMarking_Unspecified = 0;
   */
  HlzMarking_Unspecified = 0,

  /**
   * @generated from enum value: HlzMarking_Panels = 1;
   */
  HlzMarking_Panels = 1,

  /**
   * @generated from enum value: HlzMarking_PyroSignal = 2;
   */
  HlzMarking_PyroSignal = 2,

  /**
   * @generated from enum value: HlzMarking_Smoke = 3;
   */
  HlzMarking_Smoke = 3,

  /**
   * @generated from enum value: HlzMarking_None = 4;
   */
  HlzMarking_None = 4,

  /**
   * @generated from enum value: HlzMarking_Other = 5;
   */
  HlzMarking_Other = 5,
}

/**
 * Describes the enum meshtastic.CasevacReport.HlzMarking.
 */
export const CasevacReport_HlzMarkingSchema: GenEnum<CasevacReport_HlzMarking> = /*@__PURE__*/
  enumDesc(file_meshtastic_atak, 12, 1);

/**
 *
 * Line 6: security situation at the pickup zone.
 *
 * @generated from enum meshtastic.CasevacReport.Security
 */
export enum CasevacReport_Security {
  /**
   * @generated from enum value: Security_Unspecified = 0;
   */
  Unspecified = 0,

  /**
   * N - no enemy activity
   *
   * @generated from enum value: Security_NoEnemy = 1;
   */
  NoEnemy = 1,

  /**
   * P - possible enemy
   *
   * @generated from enum value: Security_PossibleEnemy = 2;
   */
  PossibleEnemy = 2,

  /**
   * E - enemy, approach with caution
   *
   * @generated from enum value: Security_EnemyInArea = 3;
   */
  EnemyInArea = 3,

  /**
   * X - armed escort required
   *
   * @generated from enum value: Security_EnemyInArmedContact = 4;
   */
  EnemyInArmedContact = 4,
}

/**
 * Describes the enum meshtastic.CasevacReport.Security.
 */
export const CasevacReport_SecuritySchema: GenEnum<CasevacReport_Security> = /*@__PURE__*/
  enumDesc(file_meshtastic_atak, 12, 2);

/**
 *
 * 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.
 *
 * @generated from message meshtastic.ZMistEntry
 */
export type ZMistEntry = Message<"meshtastic.ZMistEntry"> & {
  /**
   *
   * Patient identifier / sequence label (e.g. "ZMIST-1", "ZMIST-2").
   *
   * @generated from field: string title = 1;
   */
  title: string;

  /**
   *
   * Zap number — unique patient tracking ID (often a terse code like
   * "Gunshot" or a serial).
   *
   * @generated from field: string z = 2;
   */
  z: string;

  /**
   *
   * Mechanism of injury (e.g. "Penetrating trauma", "Blast injury").
   *
   * @generated from field: string m = 3;
   */
  m: string;

  /**
   *
   * Injuries observed (e.g. "Left thigh", "Concussion").
   *
   * @generated from field: string i = 4;
   */
  i: string;

  /**
   *
   * Signs / vital stats (e.g. "Stable", "Priority", "BP 110/70").
   *
   * @generated from field: string s = 5;
   */
  s: string;

  /**
   *
   * Treatment given (e.g. "Tourniquet 1810Z", "O2 administered").
   *
   * @generated from field: string t = 6;
   */
  t: string;
};

/**
 * Describes the message meshtastic.ZMistEntry.
 * Use `create(ZMistEntrySchema)` to create a new message.
 */
export const ZMistEntrySchema: GenMessage<ZMistEntry> = /*@__PURE__*/
  messageDesc(file_meshtastic_atak, 13);

/**
 *
 * 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.
 *
 * @generated from message meshtastic.EmergencyAlert
 */
export type EmergencyAlert = Message<"meshtastic.EmergencyAlert"> & {
  /**
   *
   * Alert discriminator.
   *
   * @generated from field: meshtastic.EmergencyAlert.Type type = 1;
   */
  type: EmergencyAlert_Type;

  /**
   *
   * 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.
   *
   * @generated from field: string authoring_uid = 2;
   */
  authoringUid: string;

  /**
   *
   * For Type_Cancel: the uid of the alert being cancelled. Empty for
   * non-cancel alert types.
   *
   * @generated from field: string cancel_reference_uid = 3;
   */
  cancelReferenceUid: string;
};

/**
 * Describes the message meshtastic.EmergencyAlert.
 * Use `create(EmergencyAlertSchema)` to create a new message.
 */
export const EmergencyAlertSchema: GenMessage<EmergencyAlert> = /*@__PURE__*/
  messageDesc(file_meshtastic_atak, 14);

/**
 * @generated from enum meshtastic.EmergencyAlert.Type
 */
export enum EmergencyAlert_Type {
  /**
   * @generated from enum value: Type_Unspecified = 0;
   */
  Unspecified = 0,

  /**
   * b-a-o-tbl
   *
   * @generated from enum value: Type_Alert911 = 1;
   */
  Alert911 = 1,

  /**
   * b-a-o-pan
   *
   * @generated from enum value: Type_RingTheBell = 2;
   */
  RingTheBell = 2,

  /**
   * b-a-o-opn
   *
   * @generated from enum value: Type_InContact = 3;
   */
  InContact = 3,

  /**
   * b-a-g
   *
   * @generated from enum value: Type_GeoFenceBreached = 4;
   */
  GeoFenceBreached = 4,

  /**
   * b-a-o-c
   *
   * @generated from enum value: Type_Custom = 5;
   */
  Custom = 5,

  /**
   * b-a-o-can
   *
   * @generated from enum value: Type_Cancel = 6;
   */
  Cancel = 6,
}

/**
 * Describes the enum meshtastic.EmergencyAlert.Type.
 */
export const EmergencyAlert_TypeSchema: GenEnum<EmergencyAlert_Type> = /*@__PURE__*/
  enumDesc(file_meshtastic_atak, 14, 0);

/**
 *
 * 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.
 *
 * @generated from message meshtastic.TaskRequest
 */
export type TaskRequest = Message<"meshtastic.TaskRequest"> & {
  /**
   *
   * 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.
   *
   * @generated from field: string task_type = 1;
   */
  taskType: string;

  /**
   *
   * UID of the target / map item being tasked.
   *
   * @generated from field: string target_uid = 2;
   */
  targetUid: string;

  /**
   *
   * UID of the assigned unit. Empty = unassigned / broadcast task.
   *
   * @generated from field: string assignee_uid = 3;
   */
  assigneeUid: string;

  /**
   * @generated from field: meshtastic.TaskRequest.Priority priority = 4;
   */
  priority: TaskRequest_Priority;

  /**
   * @generated from field: meshtastic.TaskRequest.Status status = 5;
   */
  status: TaskRequest_Status;

  /**
   *
   * Optional short note (reason, constraints, grid reference). Capped
   * tight in options to keep the worst-case under the LoRa MTU.
   *
   * @generated from field: string note = 6;
   */
  note: string;
};

/**
 * Describes the message meshtastic.TaskRequest.
 * Use `create(TaskRequestSchema)` to create a new message.
 */
export const TaskRequestSchema: GenMessage<TaskRequest> = /*@__PURE__*/
  messageDesc(file_meshtastic_atak, 15);

/**
 * @generated from enum meshtastic.TaskRequest.Priority
 */
export enum TaskRequest_Priority {
  /**
   * @generated from enum value: Priority_Unspecified = 0;
   */
  Unspecified = 0,

  /**
   * @generated from enum value: Priority_Low = 1;
   */
  Low = 1,

  /**
   * @generated from enum value: Priority_Normal = 2;
   */
  Normal = 2,

  /**
   * @generated from enum value: Priority_High = 3;
   */
  High = 3,

  /**
   * @generated from enum value: Priority_Critical = 4;
   */
  Critical = 4,
}

/**
 * Describes the enum meshtastic.TaskRequest.Priority.
 */
export const TaskRequest_PrioritySchema: GenEnum<TaskRequest_Priority> = /*@__PURE__*/
  enumDesc(file_meshtastic_atak, 15, 0);

/**
 * @generated from enum meshtastic.TaskRequest.Status
 */
export enum TaskRequest_Status {
  /**
   * @generated from enum value: Status_Unspecified = 0;
   */
  Unspecified = 0,

  /**
   * assigned, not yet acknowledged
   *
   * @generated from enum value: Status_Pending = 1;
   */
  Pending = 1,

  /**
   * assignee has seen it
   *
   * @generated from enum value: Status_Acknowledged = 2;
   */
  Acknowledged = 2,

  /**
   * assignee is working it
   *
   * @generated from enum value: Status_InProgress = 3;
   */
  InProgress = 3,

  /**
   * task done
   *
   * @generated from enum value: Status_Completed = 4;
   */
  Completed = 4,

  /**
   * cancelled before completion
   *
   * @generated from enum value: Status_Cancelled = 5;
   */
  Cancelled = 5,
}

/**
 * Describes the enum meshtastic.TaskRequest.Status.
 */
export const TaskRequest_StatusSchema: GenEnum<TaskRequest_Status> = /*@__PURE__*/
  enumDesc(file_meshtastic_atak, 15, 1);

/**
 *
 * 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#).
 *
 * @generated from message meshtastic.TAKEnvironment
 */
export type TAKEnvironment = Message<"meshtastic.TAKEnvironment"> & {
  /**
   *
   * 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.
   *
   * @generated from field: sint32 temperature_c_x10 = 1;
   */
  temperatureCX10: number;

  /**
   *
   * Wind direction in whole degrees, 0-359. "Direction FROM" per
   * meteorological convention (matches CoT / ATAK).
   *
   * @generated from field: uint32 wind_direction_deg = 2;
   */
  windDirectionDeg: number;

  /**
   *
   * Wind speed in cm/s. Matches the unit of TAKPacketV2.speed for
   * consistency. 1200 = 12.00 m/s = ~27 mph.
   *
   * @generated from field: uint32 wind_speed_cm_s = 3;
   */
  windSpeedCmS: number;
};

/**
 * Describes the message meshtastic.TAKEnvironment.
 * Use `create(TAKEnvironmentSchema)` to create a new message.
 */
export const TAKEnvironmentSchema: GenMessage<TAKEnvironment> = /*@__PURE__*/
  messageDesc(file_meshtastic_atak, 16);

/**
 *
 * 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).
 *
 * @generated from message meshtastic.SensorFov
 */
export type SensorFov = Message<"meshtastic.SensorFov"> & {
  /**
   * @generated from field: meshtastic.SensorFov.SensorType type = 1;
   */
  type: SensorFov_SensorType;

  /**
   *
   * 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.
   *
   * @generated from field: uint32 azimuth_deg = 2;
   */
  azimuthDeg: number;

  /**
   *
   * Maximum range of the cone in meters.
   * Optional — if unset, receivers should use the ATAK-CIV default of 100m.
   *
   * @generated from field: optional uint32 range_m = 3;
   */
  rangeM?: number | undefined;

  /**
   *
   * Horizontal field of view in whole degrees (cone's angular width).
   * ATAK-CIV default is 45°.
   *
   * @generated from field: uint32 fov_horizontal_deg = 4;
   */
  fovHorizontalDeg: number;

  /**
   *
   * Vertical field of view in whole degrees. ATAK-CIV default is 45°.
   * Optional — a value of 0 means "not set / use horizontal FOV".
   *
   * @generated from field: uint32 fov_vertical_deg = 5;
   */
  fovVerticalDeg: number;

  /**
   *
   * Elevation angle in whole degrees. Positive = up, negative = down.
   * Range -90 to +90. sint32 for varint efficiency on small negatives.
   *
   * @generated from field: sint32 elevation_deg = 6;
   */
  elevationDeg: number;

  /**
   *
   * Roll (camera tilt) in whole degrees, -180 to +180.
   * Optional — use 0 if the sensor doesn't track roll.
   *
   * @generated from field: sint32 roll_deg = 7;
   */
  rollDeg: number;

  /**
   *
   * Free-form device model identifier, e.g. "FLIR-Boson-640", "SEEK".
   * Optional — empty string means "unknown model" (ATAK-CIV default).
   *
   * @generated from field: string model = 8;
   */
  model: string;
};

/**
 * Describes the message meshtastic.SensorFov.
 * Use `create(SensorFovSchema)` to create a new message.
 */
export const SensorFovSchema: GenMessage<SensorFov> = /*@__PURE__*/
  messageDesc(file_meshtastic_atak, 17);

/**
 *
 * 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.
 *
 * @generated from enum meshtastic.SensorFov.SensorType
 */
export enum SensorFov_SensorType {
  /**
   * @generated from enum value: SensorType_Unspecified = 0;
   */
  SensorType_Unspecified = 0,

  /**
   * daylight / general optical
   *
   * @generated from enum value: SensorType_Camera = 1;
   */
  SensorType_Camera = 1,

  /**
   * FLIR, thermal imager
   *
   * @generated from enum value: SensorType_Thermal = 2;
   */
  SensorType_Thermal = 2,

  /**
   * rangefinder, LRF, designator
   *
   * @generated from enum value: SensorType_Laser = 3;
   */
  SensorType_Laser = 3,

  /**
   * night vision goggles
   *
   * @generated from enum value: SensorType_Nvg = 4;
   */
  SensorType_Nvg = 4,

  /**
   * radio/radar direction-finding
   *
   * @generated from enum value: SensorType_Rf = 5;
   */
  SensorType_Rf = 5,

  /**
   * @generated from enum value: SensorType_Other = 6;
   */
  SensorType_Other = 6,
}

/**
 * Describes the enum meshtastic.SensorFov.SensorType.
 */
export const SensorFov_SensorTypeSchema: GenEnum<SensorFov_SensorType> = /*@__PURE__*/
  enumDesc(file_meshtastic_atak, 17, 0);

/**
 *
 * 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
 *
 * @generated from message meshtastic.TakTalkMessage
 */
export type TakTalkMessage = Message<"meshtastic.TakTalkMessage"> & {
  /**
   *
   * The text body of the TAKTALK message (speech-to-text transcript when
   * from_voice = true, typed message otherwise).
   *
   * @generated from field: string text = 1;
   */
  text: string;

  /**
   *
   * 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.
   *
   * @generated from field: string chatroom_id = 2;
   */
  chatroomId: string;

  /**
   *
   * BCP-47-ish language tag or human-readable name (e.g. "en", "English").
   * Empty = unspecified.
   *
   * @generated from field: string lang = 3;
   */
  lang: string;

  /**
   *
   * 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.
   *
   * @generated from field: bool from_voice = 4;
   */
  fromVoice: boolean;
};

/**
 * Describes the message meshtastic.TakTalkMessage.
 * Use `create(TakTalkMessageSchema)` to create a new message.
 */
export const TakTalkMessageSchema: GenMessage<TakTalkMessage> = /*@__PURE__*/
  messageDesc(file_meshtastic_atak, 18);

/**
 *
 * 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.
 *
 * @generated from message meshtastic.TakTalkRoomData
 */
export type TakTalkRoomData = Message<"meshtastic.TakTalkRoomData"> & {
  /**
   *
   * 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.
   *
   * @generated from field: string sender_callsign = 1 [deprecated = true];
   * @deprecated
   */
  senderCallsign: string;

  /**
   *
   * Room UUID, matches TakTalkMessage.chatroom_id / GeoChat.room_id on
   * messages routed into this room.
   *
   * @generated from field: string room_id = 2;
   */
  roomId: string;

  /**
   *
   * Friendly display name for the room (e.g. "test", "Alpha Team").
   *
   * @generated from field: string room_name = 3;
   */
  roomName: string;

  /**
   *
   * 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 ','.
   *
   * @generated from field: repeated string participants = 4;
   */
  participants: string[];
};

/**
 * Describes the message meshtastic.TakTalkRoomData.
 * Use `create(TakTalkRoomDataSchema)` to create a new message.
 */
export const TakTalkRoomDataSchema: GenMessage<TakTalkRoomData> = /*@__PURE__*/
  messageDesc(file_meshtastic_atak, 19);

/**
 *
 * 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.
 *
 * @generated from message meshtastic.Marti
 */
export type Marti = Message<"meshtastic.Marti"> & {
  /**
   *
   * 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.
   *
   * @generated from field: repeated string dest_callsign = 1;
   */
  destCallsign: string[];
};

/**
 * Describes the message meshtastic.Marti.
 * Use `create(MartiSchema)` to create a new message.
 */
export const MartiSchema: GenMessage<Marti> = /*@__PURE__*/
  messageDesc(file_meshtastic_atak, 20);

/**
 *
 * 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.
 *
 * @generated from message meshtastic.TAKPacketV2
 */
export type TAKPacketV2 = Message<"meshtastic.TAKPacketV2"> & {
  /**
   *
   * Well-known CoT event type enum.
   * Use CotType_Other with cot_type_str for unknown types.
   *
   * @generated from field: meshtastic.CotType cot_type_id = 1;
   */
  cotTypeId: CotType;

  /**
   *
   * How the coordinates were generated
   *
   * @generated from field: meshtastic.CotHow how = 2;
   */
  how: CotHow;

  /**
   *
   * Callsign
   *
   * @generated from field: string callsign = 3;
   */
  callsign: string;

  /**
   *
   * Team color assignment
   *
   * @generated from field: meshtastic.Team team = 4;
   */
  team: Team;

  /**
   *
   * Role of the group member
   *
   * @generated from field: meshtastic.MemberRole role = 5;
   */
  role: MemberRole;

  /**
   *
   * Latitude, multiply by 1e-7 to get degrees in floating point
   *
   * @generated from field: sfixed32 latitude_i = 6;
   */
  latitudeI: number;

  /**
   *
   * Longitude, multiply by 1e-7 to get degrees in floating point
   *
   * @generated from field: sfixed32 longitude_i = 7;
   */
  longitudeI: number;

  /**
   *
   * 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.
   *
   * @generated from field: sint32 altitude = 8;
   */
  altitude: number;

  /**
   *
   * Speed in cm/s
   *
   * @generated from field: uint32 speed = 9;
   */
  speed: number;

  /**
   *
   * Course in degrees * 100 (0-36000)
   *
   * @generated from field: uint32 course = 10;
   */
  course: number;

  /**
   *
   * Battery level 0-100
   *
   * @generated from field: uint32 battery = 11;
   */
  battery: number;

  /**
   *
   * Geopoint source
   *
   * @generated from field: meshtastic.GeoPointSource geo_src = 12;
   */
  geoSrc: GeoPointSource;

  /**
   *
   * Altitude source
   *
   * @generated from field: meshtastic.GeoPointSource alt_src = 13;
   */
  altSrc: GeoPointSource;

  /**
   *
   * Device UID (UUID string or device ID like "ANDROID-xxxx")
   *
   * @generated from field: string uid = 14;
   */
  uid: string;

  /**
   *
   * Device callsign
   *
   * @generated from field: string device_callsign = 15;
   */
  deviceCallsign: string;

  /**
   *
   * Stale time as seconds offset from event time
   *
   * @generated from field: uint32 stale_seconds = 16;
   */
  staleSeconds: number;

  /**
   *
   * TAK client version string
   *
   * @generated from field: string tak_version = 17;
   */
  takVersion: string;

  /**
   *
   * TAK device model
   *
   * @generated from field: string tak_device = 18;
   */
  takDevice: string;

  /**
   *
   * TAK platform (ATAK-CIV, WebTAK, etc.)
   *
   * @generated from field: string tak_platform = 19;
   */
  takPlatform: string;

  /**
   *
   * TAK OS version
   *
   * @generated from field: string tak_os = 20;
   */
  takOs: string;

  /**
   *
   * Connection endpoint
   *
   * @generated from field: string endpoint = 21;
   */
  endpoint: string;

  /**
   *
   * Phone number
   *
   * @generated from field: string phone = 22;
   */
  phone: string;

  /**
   *
   * CoT event type string, only populated when cot_type_id is CotType_Other
   *
   * @generated from field: string cot_type_str = 23;
   */
  cotTypeStr: string;

  /**
   *
   * 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.
   *
   * @generated from field: string remarks = 24;
   */
  remarks: string;

  /**
   *
   * Observed weather conditions (temperature, wind). From <environment>.
   * Type is `TAKEnvironment`, not `Environment`, to avoid colliding with
   * SwiftUI's `@Environment` property wrapper in iOS consumers.
   *
   * @generated from field: optional meshtastic.TAKEnvironment environment = 25;
   */
  environment?: TAKEnvironment | undefined;

  /**
   *
   * Sensor field-of-view cone (camera, FLIR, laser, etc.). From <sensor>.
   *
   * @generated from field: optional meshtastic.SensorFov sensor_fov = 26;
   */
  sensorFov?: SensorFov | undefined;

  /**
   *
   * 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.
   *
   * @generated from field: optional meshtastic.Marti marti = 29;
   */
  marti?: Marti | undefined;

  /**
   *
   * The payload of the packet
   *
   * Tag 30 was `bool pli` — a PLI carries no fields beyond the common
   * envelope (position is in latitude_i/longitude_i), so the boolean was
   * pure overhead (~3 wire bytes on every position beacon, the highest-
   * frequency packet). PLI is now the IMPLICIT payload: a packet with NO
   * payload_variant set decodes as a position report. Tag 30 is reserved at
   * the message level (proto3 forbids `reserved` inside a oneof).
   *
   * @generated from oneof meshtastic.TAKPacketV2.payload_variant
   */
  payloadVariant: {
    /**
     *
     * ATAK GeoChat message
     *
     * @generated from field: meshtastic.GeoChat chat = 31;
     */
    value: GeoChat;
    case: "chat";
  } | {
    /**
     *
     * Aircraft track data (ADS-B, military air)
     *
     * @generated from field: meshtastic.AircraftTrack aircraft = 32;
     */
    value: AircraftTrack;
    case: "aircraft";
  } | {
    /**
     *
     * 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.
     *
     * @generated from field: bytes raw_detail = 33;
     */
    value: Uint8Array;
    case: "rawDetail";
  } | {
    /**
     *
     * User-drawn tactical graphic: circle, rectangle, polygon, polyline,
     * telestration, ranging circle, or bullseye. See DrawnShape.
     *
     * @generated from field: meshtastic.DrawnShape shape = 34;
     */
    value: DrawnShape;
    case: "shape";
  } | {
    /**
     *
     * Fixed point of interest: spot marker, waypoint, checkpoint, 2525
     * symbol, or custom icon. See Marker.
     *
     * @generated from field: meshtastic.Marker marker = 35;
     */
    value: Marker;
    case: "marker";
  } | {
    /**
     *
     * Range and bearing measurement line. See RangeAndBearing.
     *
     * @generated from field: meshtastic.RangeAndBearing rab = 36;
     */
    value: RangeAndBearing;
    case: "rab";
  } | {
    /**
     *
     * Named route with ordered waypoints and control points. See Route.
     *
     * @generated from field: meshtastic.Route route = 37;
     */
    value: Route;
    case: "route";
  } | {
    /**
     *
     * 9-line MEDEVAC request. See CasevacReport.
     *
     * @generated from field: meshtastic.CasevacReport casevac = 38;
     */
    value: CasevacReport;
    case: "casevac";
  } | {
    /**
     *
     * Emergency beacon / 911 alert. See EmergencyAlert.
     *
     * @generated from field: meshtastic.EmergencyAlert emergency = 39;
     */
    value: EmergencyAlert;
    case: "emergency";
  } | {
    /**
     *
     * Task / engage request. See TaskRequest.
     *
     * @generated from field: meshtastic.TaskRequest task = 40;
     */
    value: TaskRequest;
    case: "task";
  } | {
    /**
     *
     * 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.
     *
     * @generated from field: meshtastic.TakTalkMessage taktalk = 41;
     */
    value: TakTalkMessage;
    case: "taktalk";
  } | {
    /**
     *
     * 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.
     *
     * @generated from field: meshtastic.TakTalkRoomData taktalk_room = 42;
     */
    value: TakTalkRoomData;
    case: "taktalkRoom";
  } | { case: undefined; value?: undefined };
};

/**
 * Describes the message meshtastic.TAKPacketV2.
 * Use `create(TAKPacketV2Schema)` to create a new message.
 */
export const TAKPacketV2Schema: GenMessage<TAKPacketV2> = /*@__PURE__*/
  messageDesc(file_meshtastic_atak, 21);

/**
 * @generated from enum meshtastic.Team
 */
export enum Team {
  /**
   *
   * Unspecifed
   *
   * @generated from enum value: Unspecifed_Color = 0;
   */
  Unspecifed_Color = 0,

  /**
   *
   * White
   *
   * @generated from enum value: White = 1;
   */
  White = 1,

  /**
   *
   * Yellow
   *
   * @generated from enum value: Yellow = 2;
   */
  Yellow = 2,

  /**
   *
   * Orange
   *
   * @generated from enum value: Orange = 3;
   */
  Orange = 3,

  /**
   *
   * Magenta
   *
   * @generated from enum value: Magenta = 4;
   */
  Magenta = 4,

  /**
   *
   * Red
   *
   * @generated from enum value: Red = 5;
   */
  Red = 5,

  /**
   *
   * Maroon
   *
   * @generated from enum value: Maroon = 6;
   */
  Maroon = 6,

  /**
   *
   * Purple
   *
   * @generated from enum value: Purple = 7;
   */
  Purple = 7,

  /**
   *
   * Dark Blue
   *
   * @generated from enum value: Dark_Blue = 8;
   */
  Dark_Blue = 8,

  /**
   *
   * Blue
   *
   * @generated from enum value: Blue = 9;
   */
  Blue = 9,

  /**
   *
   * Cyan
   *
   * @generated from enum value: Cyan = 10;
   */
  Cyan = 10,

  /**
   *
   * Teal
   *
   * @generated from enum value: Teal = 11;
   */
  Teal = 11,

  /**
   *
   * Green
   *
   * @generated from enum value: Green = 12;
   */
  Green = 12,

  /**
   *
   * Dark Green
   *
   * @generated from enum value: Dark_Green = 13;
   */
  Dark_Green = 13,

  /**
   *
   * Brown
   *
   * @generated from enum value: Brown = 14;
   */
  Brown = 14,
}

/**
 * Describes the enum meshtastic.Team.
 */
export const TeamSchema: GenEnum<Team> = /*@__PURE__*/
  enumDesc(file_meshtastic_atak, 0);

/**
 *
 * Role of the group member
 *
 * @generated from enum meshtastic.MemberRole
 */
export enum MemberRole {
  /**
   *
   * Unspecifed
   *
   * @generated from enum value: Unspecifed = 0;
   */
  Unspecifed = 0,

  /**
   *
   * Team Member
   *
   * @generated from enum value: TeamMember = 1;
   */
  TeamMember = 1,

  /**
   *
   * Team Lead
   *
   * @generated from enum value: TeamLead = 2;
   */
  TeamLead = 2,

  /**
   *
   * Headquarters
   *
   * @generated from enum value: HQ = 3;
   */
  HQ = 3,

  /**
   *
   * Airsoft enthusiast
   *
   * @generated from enum value: Sniper = 4;
   */
  Sniper = 4,

  /**
   *
   * Medic
   *
   * @generated from enum value: Medic = 5;
   */
  Medic = 5,

  /**
   *
   * ForwardObserver
   *
   * @generated from enum value: ForwardObserver = 6;
   */
  ForwardObserver = 6,

  /**
   *
   * Radio Telephone Operator
   *
   * @generated from enum value: RTO = 7;
   */
  RTO = 7,

  /**
   *
   * Doggo
   *
   * @generated from enum value: K9 = 8;
   */
  K9 = 8,
}

/**
 * Describes the enum meshtastic.MemberRole.
 */
export const MemberRoleSchema: GenEnum<MemberRole> = /*@__PURE__*/
  enumDesc(file_meshtastic_atak, 1);

/**
 *
 * CoT how field values.
 * Represents how the coordinates were generated.
 *
 * @generated from enum meshtastic.CotHow
 */
export enum CotHow {
  /**
   *
   * Unspecified
   *
   * @generated from enum value: CotHow_Unspecified = 0;
   */
  CotHow_Unspecified = 0,

  /**
   *
   * Human entered
   *
   * @generated from enum value: CotHow_h_e = 1;
   */
  CotHow_h_e = 1,

  /**
   *
   * Machine generated
   *
   * @generated from enum value: CotHow_m_g = 2;
   */
  CotHow_m_g = 2,

  /**
   *
   * Human GPS/INS derived
   *
   * @generated from enum value: CotHow_h_g_i_g_o = 3;
   */
  CotHow_h_g_i_g_o = 3,

  /**
   *
   * Machine relayed (imported from another system/gateway)
   *
   * @generated from enum value: CotHow_m_r = 4;
   */
  CotHow_m_r = 4,

  /**
   *
   * Machine fused (corroborated from multiple sources)
   *
   * @generated from enum value: CotHow_m_f = 5;
   */
  CotHow_m_f = 5,

  /**
   *
   * Machine predicted
   *
   * @generated from enum value: CotHow_m_p = 6;
   */
  CotHow_m_p = 6,

  /**
   *
   * Machine simulated
   *
   * @generated from enum value: CotHow_m_s = 7;
   */
  CotHow_m_s = 7,
}

/**
 * Describes the enum meshtastic.CotHow.
 */
export const CotHowSchema: GenEnum<CotHow> = /*@__PURE__*/
  enumDesc(file_meshtastic_atak, 2);

/**
 *
 * 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.
 *
 * @generated from enum meshtastic.CotType
 */
export enum CotType {
  /**
   *
   * Unknown or unmapped type, use cot_type_str
   *
   * @generated from enum value: CotType_Other = 0;
   */
  CotType_Other = 0,

  /**
   *
   * a-f-G-U-C: Friendly ground unit combat
   *
   * @generated from enum value: CotType_a_f_G_U_C = 1;
   */
  CotType_a_f_G_U_C = 1,

  /**
   *
   * a-f-G-U-C-I: Friendly ground unit combat infantry
   *
   * @generated from enum value: CotType_a_f_G_U_C_I = 2;
   */
  CotType_a_f_G_U_C_I = 2,

  /**
   *
   * a-n-A-C-F: Neutral aircraft civilian fixed-wing
   *
   * @generated from enum value: CotType_a_n_A_C_F = 3;
   */
  CotType_a_n_A_C_F = 3,

  /**
   *
   * a-n-A-C-H: Neutral aircraft civilian helicopter
   *
   * @generated from enum value: CotType_a_n_A_C_H = 4;
   */
  CotType_a_n_A_C_H = 4,

  /**
   *
   * a-n-A-C: Neutral aircraft civilian
   *
   * @generated from enum value: CotType_a_n_A_C = 5;
   */
  CotType_a_n_A_C = 5,

  /**
   *
   * a-f-A-M-H: Friendly aircraft military helicopter
   *
   * @generated from enum value: CotType_a_f_A_M_H = 6;
   */
  CotType_a_f_A_M_H = 6,

  /**
   *
   * a-f-A-M: Friendly aircraft military
   *
   * @generated from enum value: CotType_a_f_A_M = 7;
   */
  CotType_a_f_A_M = 7,

  /**
   *
   * a-f-A-M-F-F: Friendly aircraft military fixed-wing fighter
   *
   * @generated from enum value: CotType_a_f_A_M_F_F = 8;
   */
  CotType_a_f_A_M_F_F = 8,

  /**
   *
   * a-f-A-M-H-A: Friendly aircraft military helicopter attack
   *
   * @generated from enum value: CotType_a_f_A_M_H_A = 9;
   */
  CotType_a_f_A_M_H_A = 9,

  /**
   *
   * a-f-A-M-H-U-M: Friendly aircraft military helicopter utility medium
   *
   * @generated from enum value: CotType_a_f_A_M_H_U_M = 10;
   */
  CotType_a_f_A_M_H_U_M = 10,

  /**
   *
   * a-h-A-M-F-F: Hostile aircraft military fixed-wing fighter
   *
   * @generated from enum value: CotType_a_h_A_M_F_F = 11;
   */
  CotType_a_h_A_M_F_F = 11,

  /**
   *
   * a-h-A-M-H-A: Hostile aircraft military helicopter attack
   *
   * @generated from enum value: CotType_a_h_A_M_H_A = 12;
   */
  CotType_a_h_A_M_H_A = 12,

  /**
   *
   * a-u-A-C: Unknown aircraft civilian
   *
   * @generated from enum value: CotType_a_u_A_C = 13;
   */
  CotType_a_u_A_C = 13,

  /**
   *
   * t-x-d-d: Tasking delete/disconnect
   *
   * @generated from enum value: CotType_t_x_d_d = 14;
   */
  CotType_t_x_d_d = 14,

  /**
   *
   * a-f-G-E-S-E: Friendly ground equipment sensor
   *
   * @generated from enum value: CotType_a_f_G_E_S_E = 15;
   */
  CotType_a_f_G_E_S_E = 15,

  /**
   *
   * a-f-G-E-V-C: Friendly ground equipment vehicle
   *
   * @generated from enum value: CotType_a_f_G_E_V_C = 16;
   */
  CotType_a_f_G_E_V_C = 16,

  /**
   *
   * a-f-S: Friendly sea
   *
   * @generated from enum value: CotType_a_f_S = 17;
   */
  CotType_a_f_S = 17,

  /**
   *
   * a-f-A-M-F: Friendly aircraft military fixed-wing
   *
   * @generated from enum value: CotType_a_f_A_M_F = 18;
   */
  CotType_a_f_A_M_F = 18,

  /**
   *
   * a-f-A-M-F-C-H: Friendly aircraft military fixed-wing cargo heavy
   *
   * @generated from enum value: CotType_a_f_A_M_F_C_H = 19;
   */
  CotType_a_f_A_M_F_C_H = 19,

  /**
   *
   * a-f-A-M-F-U-L: Friendly aircraft military fixed-wing utility light
   *
   * @generated from enum value: CotType_a_f_A_M_F_U_L = 20;
   */
  CotType_a_f_A_M_F_U_L = 20,

  /**
   *
   * a-f-A-M-F-L: Friendly aircraft military fixed-wing liaison
   *
   * @generated from enum value: CotType_a_f_A_M_F_L = 21;
   */
  CotType_a_f_A_M_F_L = 21,

  /**
   *
   * a-f-A-M-F-P: Friendly aircraft military fixed-wing patrol
   *
   * @generated from enum value: CotType_a_f_A_M_F_P = 22;
   */
  CotType_a_f_A_M_F_P = 22,

  /**
   *
   * a-f-A-C-H: Friendly aircraft civilian helicopter
   *
   * @generated from enum value: CotType_a_f_A_C_H = 23;
   */
  CotType_a_f_A_C_H = 23,

  /**
   *
   * a-n-A-M-F-Q: Neutral aircraft military fixed-wing drone
   *
   * @generated from enum value: CotType_a_n_A_M_F_Q = 24;
   */
  CotType_a_n_A_M_F_Q = 24,

  /**
   *
   * b-t-f: GeoChat message
   *
   * @generated from enum value: CotType_b_t_f = 25;
   */
  CotType_b_t_f = 25,

  /**
   *
   * b-r-f-h-c: CASEVAC/MEDEVAC report
   *
   * @generated from enum value: CotType_b_r_f_h_c = 26;
   */
  CotType_b_r_f_h_c = 26,

  /**
   *
   * b-a-o-pan: Ring the bell / alert all
   *
   * @generated from enum value: CotType_b_a_o_pan = 27;
   */
  CotType_b_a_o_pan = 27,

  /**
   *
   * b-a-o-opn: Troops in contact
   *
   * @generated from enum value: CotType_b_a_o_opn = 28;
   */
  CotType_b_a_o_opn = 28,

  /**
   *
   * b-a-o-can: Cancel alert
   *
   * @generated from enum value: CotType_b_a_o_can = 29;
   */
  CotType_b_a_o_can = 29,

  /**
   *
   * b-a-o-tbl: 911 alert
   *
   * @generated from enum value: CotType_b_a_o_tbl = 30;
   */
  CotType_b_a_o_tbl = 30,

  /**
   *
   * b-a-g: Geofence breach alert
   *
   * @generated from enum value: CotType_b_a_g = 31;
   */
  CotType_b_a_g = 31,

  /**
   *
   * a-f-G: Friendly ground (generic)
   *
   * @generated from enum value: CotType_a_f_G = 32;
   */
  CotType_a_f_G = 32,

  /**
   *
   * a-f-G-U: Friendly ground unit (generic)
   *
   * @generated from enum value: CotType_a_f_G_U = 33;
   */
  CotType_a_f_G_U = 33,

  /**
   *
   * a-h-G: Hostile ground (generic)
   *
   * @generated from enum value: CotType_a_h_G = 34;
   */
  CotType_a_h_G = 34,

  /**
   *
   * a-u-G: Unknown ground (generic)
   *
   * @generated from enum value: CotType_a_u_G = 35;
   */
  CotType_a_u_G = 35,

  /**
   *
   * a-n-G: Neutral ground (generic)
   *
   * @generated from enum value: CotType_a_n_G = 36;
   */
  CotType_a_n_G = 36,

  /**
   *
   * b-m-r: Route
   *
   * @generated from enum value: CotType_b_m_r = 37;
   */
  CotType_b_m_r = 37,

  /**
   *
   * b-m-p-w: Route waypoint
   *
   * @generated from enum value: CotType_b_m_p_w = 38;
   */
  CotType_b_m_p_w = 38,

  /**
   *
   * b-m-p-s-p-i: Self-position marker
   *
   * @generated from enum value: CotType_b_m_p_s_p_i = 39;
   */
  CotType_b_m_p_s_p_i = 39,

  /**
   *
   * u-d-f: Freeform shape (line/polygon)
   *
   * @generated from enum value: CotType_u_d_f = 40;
   */
  CotType_u_d_f = 40,

  /**
   *
   * u-d-r: Rectangle
   *
   * @generated from enum value: CotType_u_d_r = 41;
   */
  CotType_u_d_r = 41,

  /**
   *
   * u-d-c-c: Circle
   *
   * @generated from enum value: CotType_u_d_c_c = 42;
   */
  CotType_u_d_c_c = 42,

  /**
   *
   * u-rb-a: Range/bearing line
   *
   * @generated from enum value: CotType_u_rb_a = 43;
   */
  CotType_u_rb_a = 43,

  /**
   *
   * a-h-A: Hostile aircraft (generic)
   *
   * @generated from enum value: CotType_a_h_A = 44;
   */
  CotType_a_h_A = 44,

  /**
   *
   * a-u-A: Unknown aircraft (generic)
   *
   * @generated from enum value: CotType_a_u_A = 45;
   */
  CotType_a_u_A = 45,

  /**
   *
   * a-f-A-M-H-Q: Friendly aircraft military helicopter observation
   *
   * @generated from enum value: CotType_a_f_A_M_H_Q = 46;
   */
  CotType_a_f_A_M_H_Q = 46,

  /**
   *
   * a-f-A-C-F: Friendly aircraft civilian fixed-wing
   *
   * @generated from enum value: CotType_a_f_A_C_F = 47;
   */
  CotType_a_f_A_C_F = 47,

  /**
   *
   * a-f-A-C: Friendly aircraft civilian (generic)
   *
   * @generated from enum value: CotType_a_f_A_C = 48;
   */
  CotType_a_f_A_C = 48,

  /**
   *
   * a-f-A-C-L: Friendly aircraft civilian lighter-than-air
   *
   * @generated from enum value: CotType_a_f_A_C_L = 49;
   */
  CotType_a_f_A_C_L = 49,

  /**
   *
   * a-f-A: Friendly aircraft (generic)
   *
   * @generated from enum value: CotType_a_f_A = 50;
   */
  CotType_a_f_A = 50,

  /**
   *
   * a-f-A-M-H-C: Friendly aircraft military helicopter cargo
   *
   * @generated from enum value: CotType_a_f_A_M_H_C = 51;
   */
  CotType_a_f_A_M_H_C = 51,

  /**
   *
   * a-n-A-M-F-F: Neutral aircraft military fixed-wing fighter
   *
   * @generated from enum value: CotType_a_n_A_M_F_F = 52;
   */
  CotType_a_n_A_M_F_F = 52,

  /**
   *
   * a-u-A-C-F: Unknown aircraft civilian fixed-wing
   *
   * @generated from enum value: CotType_a_u_A_C_F = 53;
   */
  CotType_a_u_A_C_F = 53,

  /**
   *
   * a-f-G-U-C-F-T-A: Friendly ground unit combat forces theater aviation
   *
   * @generated from enum value: CotType_a_f_G_U_C_F_T_A = 54;
   */
  CotType_a_f_G_U_C_F_T_A = 54,

  /**
   *
   * a-f-G-U-C-V-S: Friendly ground unit combat vehicle support
   *
   * @generated from enum value: CotType_a_f_G_U_C_V_S = 55;
   */
  CotType_a_f_G_U_C_V_S = 55,

  /**
   *
   * a-f-G-U-C-R-X: Friendly ground unit combat reconnaissance exploitation
   *
   * @generated from enum value: CotType_a_f_G_U_C_R_X = 56;
   */
  CotType_a_f_G_U_C_R_X = 56,

  /**
   *
   * a-f-G-U-C-I-Z: Friendly ground unit combat infantry mechanized
   *
   * @generated from enum value: CotType_a_f_G_U_C_I_Z = 57;
   */
  CotType_a_f_G_U_C_I_Z = 57,

  /**
   *
   * a-f-G-U-C-E-C-W: Friendly ground unit combat engineer construction wheeled
   *
   * @generated from enum value: CotType_a_f_G_U_C_E_C_W = 58;
   */
  CotType_a_f_G_U_C_E_C_W = 58,

  /**
   *
   * a-f-G-U-C-I-L: Friendly ground unit combat infantry light
   *
   * @generated from enum value: CotType_a_f_G_U_C_I_L = 59;
   */
  CotType_a_f_G_U_C_I_L = 59,

  /**
   *
   * a-f-G-U-C-R-O: Friendly ground unit combat reconnaissance other
   *
   * @generated from enum value: CotType_a_f_G_U_C_R_O = 60;
   */
  CotType_a_f_G_U_C_R_O = 60,

  /**
   *
   * a-f-G-U-C-R-V: Friendly ground unit combat reconnaissance cavalry
   *
   * @generated from enum value: CotType_a_f_G_U_C_R_V = 61;
   */
  CotType_a_f_G_U_C_R_V = 61,

  /**
   *
   * a-f-G-U-H: Friendly ground unit headquarters
   *
   * @generated from enum value: CotType_a_f_G_U_H = 62;
   */
  CotType_a_f_G_U_H = 62,

  /**
   *
   * a-f-G-U-U-M-S-E: Friendly ground unit support medical surgical evacuation
   *
   * @generated from enum value: CotType_a_f_G_U_U_M_S_E = 63;
   */
  CotType_a_f_G_U_U_M_S_E = 63,

  /**
   *
   * a-f-G-U-S-M-C: Friendly ground unit support maintenance collection
   *
   * @generated from enum value: CotType_a_f_G_U_S_M_C = 64;
   */
  CotType_a_f_G_U_S_M_C = 64,

  /**
   *
   * a-f-G-E-S: Friendly ground equipment sensor (generic)
   *
   * @generated from enum value: CotType_a_f_G_E_S = 65;
   */
  CotType_a_f_G_E_S = 65,

  /**
   *
   * a-f-G-E: Friendly ground equipment (generic)
   *
   * @generated from enum value: CotType_a_f_G_E = 66;
   */
  CotType_a_f_G_E = 66,

  /**
   *
   * a-f-G-E-V-C-U: Friendly ground equipment vehicle utility
   *
   * @generated from enum value: CotType_a_f_G_E_V_C_U = 67;
   */
  CotType_a_f_G_E_V_C_U = 67,

  /**
   *
   * a-f-G-E-V-C-ps: Friendly ground equipment vehicle public safety
   *
   * @generated from enum value: CotType_a_f_G_E_V_C_ps = 68;
   */
  CotType_a_f_G_E_V_C_ps = 68,

  /**
   *
   * a-u-G-E-V: Unknown ground equipment vehicle
   *
   * @generated from enum value: CotType_a_u_G_E_V = 69;
   */
  CotType_a_u_G_E_V = 69,

  /**
   *
   * a-f-S-N-N-R: Friendly sea surface non-naval rescue
   *
   * @generated from enum value: CotType_a_f_S_N_N_R = 70;
   */
  CotType_a_f_S_N_N_R = 70,

  /**
   *
   * a-f-F-B: Friendly force boundary
   *
   * @generated from enum value: CotType_a_f_F_B = 71;
   */
  CotType_a_f_F_B = 71,

  /**
   *
   * b-m-p-s-p-loc: Self-position location marker
   *
   * @generated from enum value: CotType_b_m_p_s_p_loc = 72;
   */
  CotType_b_m_p_s_p_loc = 72,

  /**
   *
   * b-i-v: Imagery/video
   *
   * @generated from enum value: CotType_b_i_v = 73;
   */
  CotType_b_i_v = 73,

  /**
   *
   * b-f-t-r: File transfer request
   *
   * @generated from enum value: CotType_b_f_t_r = 74;
   */
  CotType_b_f_t_r = 74,

  /**
   *
   * b-f-t-a: File transfer acknowledgment
   *
   * @generated from enum value: CotType_b_f_t_a = 75;
   */
  CotType_b_f_t_a = 75,

  /**
   *
   * 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.
   *
   * @generated from enum value: CotType_u_d_f_m = 76;
   */
  CotType_u_d_f_m = 76,

  /**
   *
   * u-d-p: Closed polygon. Geometry carried via DrawnShape.vertices,
   * implicitly closed (receiver duplicates first vertex as needed).
   *
   * @generated from enum value: CotType_u_d_p = 77;
   */
  CotType_u_d_p = 77,

  /**
   *
   * b-m-p-s-m: Spot map marker (colored dot at a point of interest).
   *
   * @generated from enum value: CotType_b_m_p_s_m = 78;
   */
  CotType_b_m_p_s_m = 78,

  /**
   *
   * b-m-p-c: Checkpoint (intermediate route control point).
   *
   * @generated from enum value: CotType_b_m_p_c = 79;
   */
  CotType_b_m_p_c = 79,

  /**
   *
   * u-r-b-c-c: Ranging circle (range rings centered on the event point).
   *
   * @generated from enum value: CotType_u_r_b_c_c = 80;
   */
  CotType_u_r_b_c_c = 80,

  /**
   *
   * u-r-b-bullseye: Bullseye with configurable range rings and bearing
   * reference (magnetic / true / grid).
   *
   * @generated from enum value: CotType_u_r_b_bullseye = 81;
   */
  CotType_u_r_b_bullseye = 81,

  /**
   *
   * a-f-G-E-V-A: Friendly armored vehicle, user-selectable self PLI.
   *
   * @generated from enum value: CotType_a_f_G_E_V_A = 82;
   */
  CotType_a_f_G_E_V_A = 82,

  /**
   *
   * a-n-A: Neutral aircraft (friendly/hostile/unknown already present).
   *
   * @generated from enum value: CotType_a_n_A = 83;
   */
  CotType_a_n_A = 83,

  /**
   * --- 2525 quick-drop: artillery (4) ----------------------------------
   *
   * @generated from enum value: CotType_a_u_G_U_C_F = 84;
   */
  CotType_a_u_G_U_C_F = 84,

  /**
   * @generated from enum value: CotType_a_n_G_U_C_F = 85;
   */
  CotType_a_n_G_U_C_F = 85,

  /**
   * @generated from enum value: CotType_a_h_G_U_C_F = 86;
   */
  CotType_a_h_G_U_C_F = 86,

  /**
   * @generated from enum value: CotType_a_f_G_U_C_F = 87;
   */
  CotType_a_f_G_U_C_F = 87,

  /**
   * --- 2525 quick-drop: building (4) -----------------------------------
   *
   * @generated from enum value: CotType_a_u_G_I = 88;
   */
  CotType_a_u_G_I = 88,

  /**
   * @generated from enum value: CotType_a_n_G_I = 89;
   */
  CotType_a_n_G_I = 89,

  /**
   * @generated from enum value: CotType_a_h_G_I = 90;
   */
  CotType_a_h_G_I = 90,

  /**
   * @generated from enum value: CotType_a_f_G_I = 91;
   */
  CotType_a_f_G_I = 91,

  /**
   * --- 2525 quick-drop: mine (4) ---------------------------------------
   *
   * @generated from enum value: CotType_a_u_G_E_X_M = 92;
   */
  CotType_a_u_G_E_X_M = 92,

  /**
   * @generated from enum value: CotType_a_n_G_E_X_M = 93;
   */
  CotType_a_n_G_E_X_M = 93,

  /**
   * @generated from enum value: CotType_a_h_G_E_X_M = 94;
   */
  CotType_a_h_G_E_X_M = 94,

  /**
   * @generated from enum value: CotType_a_f_G_E_X_M = 95;
   */
  CotType_a_f_G_E_X_M = 95,

  /**
   * --- 2525 quick-drop: ship (3; a-f-S already at 17) ------------------
   *
   * @generated from enum value: CotType_a_u_S = 96;
   */
  CotType_a_u_S = 96,

  /**
   * @generated from enum value: CotType_a_n_S = 97;
   */
  CotType_a_n_S = 97,

  /**
   * @generated from enum value: CotType_a_h_S = 98;
   */
  CotType_a_h_S = 98,

  /**
   * --- 2525 quick-drop: sniper (4) -------------------------------------
   *
   * @generated from enum value: CotType_a_u_G_U_C_I_d = 99;
   */
  CotType_a_u_G_U_C_I_d = 99,

  /**
   * @generated from enum value: CotType_a_n_G_U_C_I_d = 100;
   */
  CotType_a_n_G_U_C_I_d = 100,

  /**
   * @generated from enum value: CotType_a_h_G_U_C_I_d = 101;
   */
  CotType_a_h_G_U_C_I_d = 101,

  /**
   * @generated from enum value: CotType_a_f_G_U_C_I_d = 102;
   */
  CotType_a_f_G_U_C_I_d = 102,

  /**
   * --- 2525 quick-drop: tank (4) ---------------------------------------
   *
   * @generated from enum value: CotType_a_u_G_E_V_A_T = 103;
   */
  CotType_a_u_G_E_V_A_T = 103,

  /**
   * @generated from enum value: CotType_a_n_G_E_V_A_T = 104;
   */
  CotType_a_n_G_E_V_A_T = 104,

  /**
   * @generated from enum value: CotType_a_h_G_E_V_A_T = 105;
   */
  CotType_a_h_G_E_V_A_T = 105,

  /**
   * @generated from enum value: CotType_a_f_G_E_V_A_T = 106;
   */
  CotType_a_f_G_E_V_A_T = 106,

  /**
   * --- 2525 quick-drop: troops (3; a-f-G-U-C-I already at 2) -----------
   *
   * @generated from enum value: CotType_a_u_G_U_C_I = 107;
   */
  CotType_a_u_G_U_C_I = 107,

  /**
   * @generated from enum value: CotType_a_n_G_U_C_I = 108;
   */
  CotType_a_n_G_U_C_I = 108,

  /**
   * @generated from enum value: CotType_a_h_G_U_C_I = 109;
   */
  CotType_a_h_G_U_C_I = 109,

  /**
   * --- 2525 quick-drop: generic vehicle (3; a-u-G-E-V already at 69) ---
   *
   * @generated from enum value: CotType_a_n_G_E_V = 110;
   */
  CotType_a_n_G_E_V = 110,

  /**
   * @generated from enum value: CotType_a_h_G_E_V = 111;
   */
  CotType_a_h_G_E_V = 111,

  /**
   * @generated from enum value: CotType_a_f_G_E_V = 112;
   */
  CotType_a_f_G_E_V = 112,

  /**
   *
   * b-m-p-w-GOTO: Go To / bloodhound navigation target.
   *
   * @generated from enum value: CotType_b_m_p_w_GOTO = 113;
   */
  CotType_b_m_p_w_GOTO = 113,

  /**
   *
   * b-m-p-c-ip: Initial point (mission planning).
   *
   * @generated from enum value: CotType_b_m_p_c_ip = 114;
   */
  CotType_b_m_p_c_ip = 114,

  /**
   *
   * b-m-p-c-cp: Contact point (mission planning).
   *
   * @generated from enum value: CotType_b_m_p_c_cp = 115;
   */
  CotType_b_m_p_c_cp = 115,

  /**
   *
   * b-m-p-s-p-op: Observation post.
   *
   * @generated from enum value: CotType_b_m_p_s_p_op = 116;
   */
  CotType_b_m_p_s_p_op = 116,

  /**
   *
   * u-d-v: 2D vehicle outline drawn on the map.
   *
   * @generated from enum value: CotType_u_d_v = 117;
   */
  CotType_u_d_v = 117,

  /**
   *
   * u-d-v-m: 3D vehicle model reference.
   *
   * @generated from enum value: CotType_u_d_v_m = 118;
   */
  CotType_u_d_v_m = 118,

  /**
   *
   * u-d-c-e: Non-circular ellipse (circle with distinct major/minor axes).
   *
   * @generated from enum value: CotType_u_d_c_e = 119;
   */
  CotType_u_d_c_e = 119,

  /**
   *
   * 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.
   *
   * @generated from enum value: CotType_b_i_x_i = 120;
   */
  CotType_b_i_x_i = 120,

  /**
   *
   * b-t-f-d: GeoChat delivered receipt. Carried on the existing `chat`
   * payload_variant via GeoChat.receipt_for_uid + receipt_type.
   *
   * @generated from enum value: CotType_b_t_f_d = 121;
   */
  CotType_b_t_f_d = 121,

  /**
   *
   * b-t-f-r: GeoChat read receipt. Same wire slot as b-t-f-d.
   *
   * @generated from enum value: CotType_b_t_f_r = 122;
   */
  CotType_b_t_f_r = 122,

  /**
   *
   * b-a-o-c: Custom / generic emergency beacon.
   *
   * @generated from enum value: CotType_b_a_o_c = 123;
   */
  CotType_b_a_o_c = 123,

  /**
   *
   * t-s: Task / engage request. Structured payload carried via the new
   * TaskRequest typed variant.
   *
   * @generated from enum value: CotType_t_s = 124;
   */
  CotType_t_s = 124,

  /**
   *
   * m-t-t: TAKTALK voice/text chat message. Payload carried via the
   * TakTalkMessage typed variant (text, chatroom_id, lang, from_voice).
   *
   * @generated from enum value: CotType_m_t_t = 125;
   */
  CotType_m_t_t = 125,

  /**
   *
   * 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.
   *
   * @generated from enum value: CotType_y = 126;
   */
  CotType_y = 126,
}

/**
 * Describes the enum meshtastic.CotType.
 */
export const CotTypeSchema: GenEnum<CotType> = /*@__PURE__*/
  enumDesc(file_meshtastic_atak, 3);

/**
 *
 * Geopoint and altitude source
 *
 * @generated from enum meshtastic.GeoPointSource
 */
export enum GeoPointSource {
  /**
   *
   * Unspecified
   *
   * @generated from enum value: GeoPointSource_Unspecified = 0;
   */
  GeoPointSource_Unspecified = 0,

  /**
   *
   * GPS derived
   *
   * @generated from enum value: GeoPointSource_GPS = 1;
   */
  GeoPointSource_GPS = 1,

  /**
   *
   * User entered
   *
   * @generated from enum value: GeoPointSource_USER = 2;
   */
  GeoPointSource_USER = 2,

  /**
   *
   * Network/external
   *
   * @generated from enum value: GeoPointSource_NETWORK = 3;
   */
  GeoPointSource_NETWORK = 3,
}

/**
 * Describes the enum meshtastic.GeoPointSource.
 */
export const GeoPointSourceSchema: GenEnum<GeoPointSource> = /*@__PURE__*/
  enumDesc(file_meshtastic_atak, 4);

