// @generated by protoc-gen-es v2.13.0 with parameter "target=ts,import_extension=js"
// @generated from file soulfire/bot_live.proto (package soulfire.v1, syntax proto3)
/* eslint-disable */

import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
import { file_soulfire_api_docs } from "./api_docs_pb.js";
import type { BotInventoryStateResponse, BotLiveState, BotStatus, GameMode } from "./bot_pb.js";
import { file_soulfire_bot } from "./bot_pb.js";
import type { BlockPosition, WorldPosition } from "./common_pb.js";
import { file_soulfire_common } from "./common_pb.js";
import type { BlockSnapshot, EntityReference, EntitySnapshot, TextComponent, Vec3 } from "./domain_pb.js";
import { file_soulfire_domain } from "./domain_pb.js";
import { file_google_api_annotations } from "../google/api/annotations_pb.js";
import { file_google_api_field_behavior } from "../google/api/field_behavior_pb.js";
import type { Timestamp } from "@bufbuild/protobuf/wkt";
import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
import type { Message } from "@bufbuild/protobuf";

/**
 * Describes the file soulfire/bot_live.proto.
 */
export const file_soulfire_bot_live: GenFile = /*@__PURE__*/
  fileDesc(" ", [file_soulfire_api_docs, file_soulfire_bot, file_soulfire_common, file_soulfire_domain, file_google_api_annotations, file_google_api_field_behavior, file_google_protobuf_timestamp]);

/**
 * A block observed in the bot's world view, including its type and runtime
 * property state (e.g. "facing": "north", "waterlogged": "true").
 *
 * @generated from message soulfire.v1.BlockState
 */
export type BlockState = Message<"soulfire.v1.BlockState"> & {
  /**
   * The block position.
   *
   * @generated from field: soulfire.v1.BlockPosition position = 1;
   */
  position?: BlockPosition | undefined;

  /**
   * The namespaced block id (e.g. "minecraft:oak_log").
   *
   * @generated from field: string block_id = 2;
   */
  blockId: string;

  /**
   * Flattened block state properties (name -> value) for the block. Empty for
   * blocks with no variants.
   *
   * @generated from field: map<string, string> properties = 3;
   */
  properties: { [key: string]: string };
};

/**
 * Describes the message soulfire.v1.BlockState.
 * Use `create(BlockStateSchema)` to create a new message.
 */
export const BlockStateSchema: GenMessage<BlockState> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 0);

/**
 * A brief summary of an entity in the bot's world view. Intended for use as
 * a repeated item in list responses and streaming events.
 *
 * @generated from message soulfire.v1.NearbyEntity
 */
export type NearbyEntity = Message<"soulfire.v1.NearbyEntity"> & {
  /**
   * The numeric network entity id assigned by the server.
   * Use this to target the entity in AttackEntity / InteractEntity.
   *
   * @generated from field: int32 entity_id = 1;
   */
  entityId: number;

  /**
   * The namespaced entity type (e.g. "minecraft:zombie", "minecraft:player").
   *
   * @generated from field: string entity_type = 2;
   */
  entityType: string;

  /**
   * Current world position of the entity.
   *
   * @generated from field: soulfire.v1.WorldPosition position = 3;
   */
  position?: WorldPosition | undefined;

  /**
   * Straight-line distance from the bot, in blocks.
   *
   * @generated from field: float distance = 4;
   */
  distance: number;

  /**
   * Display name if the entity has one. For players this is the username.
   *
   * @generated from field: optional string display_name = 5;
   */
  displayName?: string | undefined;

  /**
   * True if this entity is a player.
   *
   * @generated from field: bool is_player = 6;
   */
  isPlayer: boolean;

  /**
   * Current health, if known. Not populated for entities without a health
   * attribute or when the bot cannot observe it.
   *
   * @generated from field: optional float health = 7;
   */
  health?: number | undefined;
};

/**
 * Describes the message soulfire.v1.NearbyEntity.
 * Use `create(NearbyEntitySchema)` to create a new message.
 */
export const NearbyEntitySchema: GenMessage<NearbyEntity> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 1);

/**
 * Options controlling which categories of events are delivered by
 * WatchBotEvents. Each category is opt-in; a stream with no categories
 * enabled still emits the initial snapshot and then stays silent.
 *
 * @generated from message soulfire.v1.BotEventFilter
 */
export type BotEventFilter = Message<"soulfire.v1.BotEventFilter"> & {
  /**
   * Deliver position / rotation / health / food / xp / dimension / game mode
   * changes as BotStateDelta.
   *
   * @generated from field: bool include_state_deltas = 1;
   */
  includeStateDeltas: boolean;

  /**
   * Deliver incoming chat and system messages as BotChatEvent.
   *
   * @generated from field: bool include_chat = 2;
   */
  includeChat: boolean;

  /**
   * Deliver connect / disconnect / spawn / death / respawn events as
   * BotLifecycleEvent.
   *
   * @generated from field: bool include_lifecycle = 3;
   */
  includeLifecycle: boolean;

  /**
   * Deliver entity spawn / update / despawn within entity_radius as
   * BotEntityEvent. Setting this without a positive radius defaults to 32
   * blocks to keep the stream manageable.
   *
   * @generated from field: bool include_entity_events = 4;
   */
  includeEntityEvents: boolean;

  /**
   * Maximum radius (blocks) for entity events. Ignored if
   * include_entity_events is false. Server clamps to a sane upper bound.
   *
   * @generated from field: float entity_radius = 5;
   */
  entityRadius: number;

  /**
   * Deliver block change events within block_radius around the bot as
   * BotBlockUpdateEvent. Setting this without a positive radius defaults to
   * 16 blocks.
   *
   * @generated from field: bool include_block_updates = 6;
   */
  includeBlockUpdates: boolean;

  /**
   * Maximum radius (blocks) for block updates. Ignored if
   * include_block_updates is false. Server clamps to a sane upper bound.
   *
   * @generated from field: float block_radius = 7;
   */
  blockRadius: number;

  /**
   * Deliver inventory and open-container snapshots when their state changes.
   *
   * @generated from field: bool include_inventory = 8;
   */
  includeInventory: boolean;

  /**
   * Deliver explicit damage events.
   *
   * @generated from field: bool include_damage = 9;
   */
  includeDamage: boolean;

  /**
   * Deliver world clock, weather, and other server game-state changes.
   *
   * @generated from field: bool include_environment = 10;
   */
  includeEnvironment: boolean;

  /**
   * Deliver tab-list additions, removals, and metadata updates.
   *
   * @generated from field: bool include_player_list = 11;
   */
  includePlayerList: boolean;

  /**
   * Deliver boss-bar lifecycle and property updates.
   *
   * @generated from field: bool include_boss_bars = 12;
   */
  includeBossBars: boolean;

  /**
   * Deliver sound playback and stop events.
   *
   * @generated from field: bool include_sounds = 13;
   */
  includeSounds: boolean;

  /**
   * Deliver particle spawn events.
   *
   * @generated from field: bool include_particles = 14;
   */
  includeParticles: boolean;

  /**
   * Deliver objectives, scores, display slots, and team updates.
   *
   * @generated from field: bool include_scoreboard = 15;
   */
  includeScoreboard: boolean;

  /**
   * Deliver server resource-pack offers and removals.
   *
   * @generated from field: bool include_resource_packs = 16;
   */
  includeResourcePacks: boolean;

  /**
   * Deliver title, subtitle, timing, clear, and reset events.
   *
   * @generated from field: bool include_titles = 17;
   */
  includeTitles: boolean;

  /**
   * Deliver chunk-column load and unload events. This can be a high-volume
   * stream while the bot is moving, so it is not enabled by default.
   *
   * @generated from field: bool include_chunks = 18;
   */
  includeChunks: boolean;
};

/**
 * Describes the message soulfire.v1.BotEventFilter.
 * Use `create(BotEventFilterSchema)` to create a new message.
 */
export const BotEventFilterSchema: GenMessage<BotEventFilter> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 2);

/**
 * Request to subscribe to a bot's live event stream.
 *
 * @generated from message soulfire.v1.WatchBotEventsRequest
 */
export type WatchBotEventsRequest = Message<"soulfire.v1.WatchBotEventsRequest"> & {
  /**
   * Owning instance UUID.
   *
   * @generated from field: string instance_id = 1;
   */
  instanceId: string;

  /**
   * Target bot profile UUID.
   *
   * @generated from field: string bot_id = 2;
   */
  botId: string;

  /**
   * Which event categories to include in the stream.
   *
   * @generated from field: soulfire.v1.BotEventFilter filter = 3;
   */
  filter?: BotEventFilter | undefined;

  /**
   * Last sequence confirmed by the caller. When the requested event is no
   * longer resumable the server emits a resync_required event followed by a
   * fresh snapshot.
   *
   * @generated from field: uint64 after_sequence = 4;
   */
  afterSequence: bigint;

  /**
   * Stream epoch associated with after_sequence.
   *
   * @generated from field: optional string stream_epoch = 5;
   */
  streamEpoch?: string | undefined;

  /**
   * Requested heartbeat interval. The server clamps this to its supported
   * range. Zero selects the server default.
   *
   * @generated from field: uint32 heartbeat_interval_seconds = 6;
   */
  heartbeatIntervalSeconds: number;
};

/**
 * Describes the message soulfire.v1.WatchBotEventsRequest.
 * Use `create(WatchBotEventsRequestSchema)` to create a new message.
 */
export const WatchBotEventsRequestSchema: GenMessage<WatchBotEventsRequest> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 3);

/**
 * Partial update to the bot's live state. Only fields present have changed
 * since the last delta or snapshot. Clients should merge deltas onto their
 * local copy of BotLiveState.
 *
 * @generated from message soulfire.v1.BotStateDelta
 */
export type BotStateDelta = Message<"soulfire.v1.BotStateDelta"> & {
  /**
   * @generated from field: optional double x = 1;
   */
  x?: number | undefined;

  /**
   * @generated from field: optional double y = 2;
   */
  y?: number | undefined;

  /**
   * @generated from field: optional double z = 3;
   */
  z?: number | undefined;

  /**
   * @generated from field: optional float x_rot = 4;
   */
  xRot?: number | undefined;

  /**
   * @generated from field: optional float y_rot = 5;
   */
  yRot?: number | undefined;

  /**
   * @generated from field: optional float health = 6;
   */
  health?: number | undefined;

  /**
   * @generated from field: optional float max_health = 7;
   */
  maxHealth?: number | undefined;

  /**
   * @generated from field: optional int32 food_level = 8;
   */
  foodLevel?: number | undefined;

  /**
   * @generated from field: optional float saturation_level = 9;
   */
  saturationLevel?: number | undefined;

  /**
   * @generated from field: optional int32 selected_hotbar_slot = 10;
   */
  selectedHotbarSlot?: number | undefined;

  /**
   * @generated from field: optional string dimension = 11;
   */
  dimension?: string | undefined;

  /**
   * @generated from field: optional int32 experience_level = 12;
   */
  experienceLevel?: number | undefined;

  /**
   * @generated from field: optional float experience_progress = 13;
   */
  experienceProgress?: number | undefined;

  /**
   * @generated from field: optional soulfire.v1.GameMode game_mode = 14;
   */
  gameMode?: GameMode | undefined;
};

/**
 * Describes the message soulfire.v1.BotStateDelta.
 * Use `create(BotStateDeltaSchema)` to create a new message.
 */
export const BotStateDeltaSchema: GenMessage<BotStateDelta> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 4);

/**
 * A single chat or system message observed by the bot.
 *
 * @generated from message soulfire.v1.BotChatEvent
 */
export type BotChatEvent = Message<"soulfire.v1.BotChatEvent"> & {
  /**
   * Where the message came from.
   *
   * @generated from field: soulfire.v1.ChatSource source = 1;
   */
  source: ChatSource;

  /**
   * Plain-text rendering of the message with formatting codes stripped.
   * Stable across Minecraft versions; suitable for pattern matching.
   *
   * @generated from field: string plain_text = 2;
   */
  plainText: string;

  /**
   * Original JSON text component for callers that need formatting, colors,
   * click events, or translation keys. Present when available from the server.
   *
   * @generated from field: optional string json_component = 3;
   */
  jsonComponent?: string | undefined;

  /**
   * Sender display name for PLAYER and WHISPER sources.
   *
   * @generated from field: optional string sender_name = 4;
   */
  senderName?: string | undefined;

  /**
   * Sender profile UUID for PLAYER and WHISPER sources, when resolvable.
   *
   * @generated from field: optional string sender_id = 5;
   */
  senderId?: string | undefined;

  /**
   * Server-side timestamp at which the message was received.
   *
   * @generated from field: google.protobuf.Timestamp received_at = 6;
   */
  receivedAt?: Timestamp | undefined;
};

/**
 * Describes the message soulfire.v1.BotChatEvent.
 * Use `create(BotChatEventSchema)` to create a new message.
 */
export const BotChatEventSchema: GenMessage<BotChatEvent> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 5);

/**
 * Lifecycle event for the bot's connection and player state.
 *
 * @generated from message soulfire.v1.BotLifecycleEvent
 */
export type BotLifecycleEvent = Message<"soulfire.v1.BotLifecycleEvent"> & {
  /**
   * @generated from field: soulfire.v1.BotLifecycleKind kind = 1;
   */
  kind: BotLifecycleKind;

  /**
   * Free-form detail message (disconnect reason, death message, etc.).
   *
   * @generated from field: optional string message = 2;
   */
  message?: string | undefined;
};

/**
 * Describes the message soulfire.v1.BotLifecycleEvent.
 * Use `create(BotLifecycleEventSchema)` to create a new message.
 */
export const BotLifecycleEventSchema: GenMessage<BotLifecycleEvent> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 6);

/**
 * An entity change within the bot's observation radius.
 *
 * @generated from message soulfire.v1.BotEntityEvent
 */
export type BotEntityEvent = Message<"soulfire.v1.BotEntityEvent"> & {
  /**
   * @generated from field: soulfire.v1.EntityEventKind kind = 1;
   */
  kind: EntityEventKind;

  /**
   * Entity summary at the time of the event. For DESPAWN, only entity_id is
   * guaranteed to be populated.
   *
   * @generated from field: soulfire.v1.NearbyEntity entity = 2;
   */
  entity?: NearbyEntity | undefined;

  /**
   * Full semantic entity state at the time of the event. Present for spawn
   * and update events. A despawn uses `entity` as its stable tombstone.
   *
   * @generated from field: optional soulfire.v1.EntitySnapshot snapshot = 3;
   */
  snapshot?: EntitySnapshot | undefined;
};

/**
 * Describes the message soulfire.v1.BotEntityEvent.
 * Use `create(BotEntityEventSchema)` to create a new message.
 */
export const BotEntityEventSchema: GenMessage<BotEntityEvent> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 7);

/**
 * A block change observed within the bot's block radius.
 *
 * @generated from message soulfire.v1.BotBlockUpdateEvent
 */
export type BotBlockUpdateEvent = Message<"soulfire.v1.BotBlockUpdateEvent"> & {
  /**
   * @generated from field: soulfire.v1.BlockPosition position = 1;
   */
  position?: BlockPosition | undefined;

  /**
   * Previous block id, if the client tracked it. Can be empty on initial
   * observation.
   *
   * @generated from field: string old_block_id = 2;
   */
  oldBlockId: string;

  /**
   * New block id after the change.
   *
   * @generated from field: string new_block_id = 3;
   */
  newBlockId: string;

  /**
   * Full semantic block state after the change, including properties,
   * lighting, fluid, mining hints, and interaction metadata.
   *
   * @generated from field: optional soulfire.v1.BlockSnapshot block = 4;
   */
  block?: BlockSnapshot | undefined;
};

/**
 * Describes the message soulfire.v1.BotBlockUpdateEvent.
 * Use `create(BotBlockUpdateEventSchema)` to create a new message.
 */
export const BotBlockUpdateEventSchema: GenMessage<BotBlockUpdateEvent> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 8);

/**
 * Current inventory or open-container state after a change.
 *
 * @generated from message soulfire.v1.BotInventoryEvent
 */
export type BotInventoryEvent = Message<"soulfire.v1.BotInventoryEvent"> & {
  /**
   * @generated from field: soulfire.v1.BotInventoryStateResponse state = 1;
   */
  state?: BotInventoryStateResponse | undefined;
};

/**
 * Describes the message soulfire.v1.BotInventoryEvent.
 * Use `create(BotInventoryEventSchema)` to create a new message.
 */
export const BotInventoryEventSchema: GenMessage<BotInventoryEvent> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 9);

/**
 * Damage observed by the bot.
 *
 * @generated from message soulfire.v1.BotDamageEvent
 */
export type BotDamageEvent = Message<"soulfire.v1.BotDamageEvent"> & {
  /**
   * @generated from field: float previous_health = 1;
   */
  previousHealth: number;

  /**
   * @generated from field: float health = 2;
   */
  health: number;

  /**
   * @generated from field: float amount = 3;
   */
  amount: number;
};

/**
 * Describes the message soulfire.v1.BotDamageEvent.
 * Use `create(BotDamageEventSchema)` to create a new message.
 */
export const BotDamageEventSchema: GenMessage<BotDamageEvent> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 10);

/**
 * @generated from message soulfire.v1.ClockSnapshot
 */
export type ClockSnapshot = Message<"soulfire.v1.ClockSnapshot"> & {
  /**
   * @generated from field: string clock_id = 1;
   */
  clockId: string;

  /**
   * @generated from field: int64 total_ticks = 2;
   */
  totalTicks: bigint;

  /**
   * @generated from field: float partial_tick = 3;
   */
  partialTick: number;

  /**
   * @generated from field: float rate = 4;
   */
  rate: number;
};

/**
 * Describes the message soulfire.v1.ClockSnapshot.
 * Use `create(ClockSnapshotSchema)` to create a new message.
 */
export const ClockSnapshotSchema: GenMessage<ClockSnapshot> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 11);

/**
 * @generated from message soulfire.v1.BotTimeEvent
 */
export type BotTimeEvent = Message<"soulfire.v1.BotTimeEvent"> & {
  /**
   * @generated from field: int64 game_time = 1;
   */
  gameTime: bigint;

  /**
   * @generated from field: repeated soulfire.v1.ClockSnapshot clocks = 2;
   */
  clocks: ClockSnapshot[];
};

/**
 * Describes the message soulfire.v1.BotTimeEvent.
 * Use `create(BotTimeEventSchema)` to create a new message.
 */
export const BotTimeEventSchema: GenMessage<BotTimeEvent> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 12);

/**
 * @generated from message soulfire.v1.BotWeatherEvent
 */
export type BotWeatherEvent = Message<"soulfire.v1.BotWeatherEvent"> & {
  /**
   * @generated from field: soulfire.v1.WeatherEventKind kind = 1;
   */
  kind: WeatherEventKind;

  /**
   * @generated from field: optional float level = 2;
   */
  level?: number | undefined;
};

/**
 * Describes the message soulfire.v1.BotWeatherEvent.
 * Use `create(BotWeatherEventSchema)` to create a new message.
 */
export const BotWeatherEventSchema: GenMessage<BotWeatherEvent> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 13);

/**
 * @generated from message soulfire.v1.BotGameEvent
 */
export type BotGameEvent = Message<"soulfire.v1.BotGameEvent"> & {
  /**
   * Stable snake-case event name, such as `immediate_respawn`.
   *
   * @generated from field: string event = 1;
   */
  event: string;

  /**
   * @generated from field: float parameter = 2;
   */
  parameter: number;
};

/**
 * Describes the message soulfire.v1.BotGameEvent.
 * Use `create(BotGameEventSchema)` to create a new message.
 */
export const BotGameEventSchema: GenMessage<BotGameEvent> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 14);

/**
 * @generated from message soulfire.v1.BotEnvironmentEvent
 */
export type BotEnvironmentEvent = Message<"soulfire.v1.BotEnvironmentEvent"> & {
  /**
   * @generated from oneof soulfire.v1.BotEnvironmentEvent.change
   */
  change: {
    /**
     * @generated from field: soulfire.v1.BotTimeEvent time = 1;
     */
    value: BotTimeEvent;
    case: "time";
  } | {
    /**
     * @generated from field: soulfire.v1.BotWeatherEvent weather = 2;
     */
    value: BotWeatherEvent;
    case: "weather";
  } | {
    /**
     * @generated from field: soulfire.v1.BotGameEvent game_event = 3;
     */
    value: BotGameEvent;
    case: "gameEvent";
  } | { case: undefined; value?: undefined };
};

/**
 * Describes the message soulfire.v1.BotEnvironmentEvent.
 * Use `create(BotEnvironmentEventSchema)` to create a new message.
 */
export const BotEnvironmentEventSchema: GenMessage<BotEnvironmentEvent> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 15);

/**
 * @generated from message soulfire.v1.PlayerListEntrySnapshot
 */
export type PlayerListEntrySnapshot = Message<"soulfire.v1.PlayerListEntrySnapshot"> & {
  /**
   * @generated from field: string profile_id = 1;
   */
  profileId: string;

  /**
   * @generated from field: optional string profile_name = 2;
   */
  profileName?: string | undefined;

  /**
   * @generated from field: bool listed = 3;
   */
  listed: boolean;

  /**
   * @generated from field: int32 latency_ms = 4;
   */
  latencyMs: number;

  /**
   * @generated from field: soulfire.v1.GameMode game_mode = 5;
   */
  gameMode: GameMode;

  /**
   * @generated from field: optional soulfire.v1.TextComponent display_name = 6;
   */
  displayName?: TextComponent | undefined;

  /**
   * @generated from field: bool show_hat = 7;
   */
  showHat: boolean;

  /**
   * @generated from field: int32 list_order = 8;
   */
  listOrder: number;

  /**
   * Packet actions applied to this entry, such as `add_player` or
   * `update_latency`. This lets consumers distinguish an omitted value from
   * a value that was not part of the update.
   *
   * @generated from field: repeated string changed_fields = 9;
   */
  changedFields: string[];
};

/**
 * Describes the message soulfire.v1.PlayerListEntrySnapshot.
 * Use `create(PlayerListEntrySnapshotSchema)` to create a new message.
 */
export const PlayerListEntrySnapshotSchema: GenMessage<PlayerListEntrySnapshot> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 16);

/**
 * @generated from message soulfire.v1.BotPlayerListEvent
 */
export type BotPlayerListEvent = Message<"soulfire.v1.BotPlayerListEvent"> & {
  /**
   * @generated from field: soulfire.v1.PlayerListEventKind kind = 1;
   */
  kind: PlayerListEventKind;

  /**
   * @generated from field: repeated soulfire.v1.PlayerListEntrySnapshot entries = 2;
   */
  entries: PlayerListEntrySnapshot[];

  /**
   * @generated from field: repeated string removed_profile_ids = 3;
   */
  removedProfileIds: string[];
};

/**
 * Describes the message soulfire.v1.BotPlayerListEvent.
 * Use `create(BotPlayerListEventSchema)` to create a new message.
 */
export const BotPlayerListEventSchema: GenMessage<BotPlayerListEvent> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 17);

/**
 * @generated from message soulfire.v1.BotBossBarEvent
 */
export type BotBossBarEvent = Message<"soulfire.v1.BotBossBarEvent"> & {
  /**
   * @generated from field: string boss_bar_id = 1;
   */
  bossBarId: string;

  /**
   * @generated from field: soulfire.v1.BossBarEventKind kind = 2;
   */
  kind: BossBarEventKind;

  /**
   * @generated from field: optional soulfire.v1.TextComponent name = 3;
   */
  name?: TextComponent | undefined;

  /**
   * @generated from field: optional float progress = 4;
   */
  progress?: number | undefined;

  /**
   * @generated from field: optional string color = 5;
   */
  color?: string | undefined;

  /**
   * @generated from field: optional string overlay = 6;
   */
  overlay?: string | undefined;

  /**
   * @generated from field: optional bool darken_screen = 7;
   */
  darkenScreen?: boolean | undefined;

  /**
   * @generated from field: optional bool play_music = 8;
   */
  playMusic?: boolean | undefined;

  /**
   * @generated from field: optional bool create_world_fog = 9;
   */
  createWorldFog?: boolean | undefined;
};

/**
 * Describes the message soulfire.v1.BotBossBarEvent.
 * Use `create(BotBossBarEventSchema)` to create a new message.
 */
export const BotBossBarEventSchema: GenMessage<BotBossBarEvent> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 18);

/**
 * @generated from message soulfire.v1.BotSoundEvent
 */
export type BotSoundEvent = Message<"soulfire.v1.BotSoundEvent"> & {
  /**
   * @generated from field: soulfire.v1.SoundEventKind kind = 1;
   */
  kind: SoundEventKind;

  /**
   * @generated from field: optional string sound_id = 2;
   */
  soundId?: string | undefined;

  /**
   * @generated from field: optional string source = 3;
   */
  source?: string | undefined;

  /**
   * @generated from field: optional soulfire.v1.WorldPosition position = 4;
   */
  position?: WorldPosition | undefined;

  /**
   * @generated from field: optional int32 entity_id = 5;
   */
  entityId?: number | undefined;

  /**
   * @generated from field: optional float volume = 6;
   */
  volume?: number | undefined;

  /**
   * @generated from field: optional float pitch = 7;
   */
  pitch?: number | undefined;

  /**
   * @generated from field: optional int64 seed = 8;
   */
  seed?: bigint | undefined;
};

/**
 * Describes the message soulfire.v1.BotSoundEvent.
 * Use `create(BotSoundEventSchema)` to create a new message.
 */
export const BotSoundEventSchema: GenMessage<BotSoundEvent> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 19);

/**
 * @generated from message soulfire.v1.BotParticleEvent
 */
export type BotParticleEvent = Message<"soulfire.v1.BotParticleEvent"> & {
  /**
   * @generated from field: string particle_id = 1;
   */
  particleId: string;

  /**
   * @generated from field: soulfire.v1.WorldPosition position = 2;
   */
  position?: WorldPosition | undefined;

  /**
   * @generated from field: soulfire.v1.Vec3 offset = 3;
   */
  offset?: Vec3 | undefined;

  /**
   * @generated from field: float max_speed = 4;
   */
  maxSpeed: number;

  /**
   * @generated from field: int32 count = 5;
   */
  count: number;

  /**
   * @generated from field: bool always_show = 6;
   */
  alwaysShow: boolean;

  /**
   * @generated from field: bool override_limiter = 7;
   */
  overrideLimiter: boolean;

  /**
   * Version-specific particle options rendered as a diagnostic string.
   *
   * @generated from field: optional string options = 8;
   */
  options?: string | undefined;
};

/**
 * Describes the message soulfire.v1.BotParticleEvent.
 * Use `create(BotParticleEventSchema)` to create a new message.
 */
export const BotParticleEventSchema: GenMessage<BotParticleEvent> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 20);

/**
 * @generated from message soulfire.v1.BotScoreboardEvent
 */
export type BotScoreboardEvent = Message<"soulfire.v1.BotScoreboardEvent"> & {
  /**
   * @generated from field: soulfire.v1.ScoreboardEventKind kind = 1;
   */
  kind: ScoreboardEventKind;

  /**
   * @generated from field: optional string objective_name = 2;
   */
  objectiveName?: string | undefined;

  /**
   * @generated from field: optional soulfire.v1.TextComponent display_name = 3;
   */
  displayName?: TextComponent | undefined;

  /**
   * @generated from field: optional string render_type = 4;
   */
  renderType?: string | undefined;

  /**
   * @generated from field: optional string display_slot = 5;
   */
  displaySlot?: string | undefined;

  /**
   * @generated from field: optional string owner = 6;
   */
  owner?: string | undefined;

  /**
   * @generated from field: optional int32 score = 7;
   */
  score?: number | undefined;

  /**
   * @generated from field: optional string team_name = 8;
   */
  teamName?: string | undefined;

  /**
   * @generated from field: repeated string players = 9;
   */
  players: string[];

  /**
   * @generated from field: optional soulfire.v1.TextComponent prefix = 10;
   */
  prefix?: TextComponent | undefined;

  /**
   * @generated from field: optional soulfire.v1.TextComponent suffix = 11;
   */
  suffix?: TextComponent | undefined;

  /**
   * @generated from field: optional string color = 12;
   */
  color?: string | undefined;

  /**
   * @generated from field: optional string name_tag_visibility = 13;
   */
  nameTagVisibility?: string | undefined;

  /**
   * @generated from field: optional string collision_rule = 14;
   */
  collisionRule?: string | undefined;

  /**
   * @generated from field: optional bool allow_friendly_fire = 15;
   */
  allowFriendlyFire?: boolean | undefined;

  /**
   * @generated from field: optional bool see_friendly_invisibles = 16;
   */
  seeFriendlyInvisibles?: boolean | undefined;
};

/**
 * Describes the message soulfire.v1.BotScoreboardEvent.
 * Use `create(BotScoreboardEventSchema)` to create a new message.
 */
export const BotScoreboardEventSchema: GenMessage<BotScoreboardEvent> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 21);

/**
 * @generated from message soulfire.v1.BotResourcePackEvent
 */
export type BotResourcePackEvent = Message<"soulfire.v1.BotResourcePackEvent"> & {
  /**
   * @generated from field: soulfire.v1.ResourcePackEventKind kind = 1;
   */
  kind: ResourcePackEventKind;

  /**
   * @generated from field: optional string pack_id = 2;
   */
  packId?: string | undefined;

  /**
   * @generated from field: optional string url = 3;
   */
  url?: string | undefined;

  /**
   * @generated from field: optional string hash = 4;
   */
  hash?: string | undefined;

  /**
   * @generated from field: optional bool required = 5;
   */
  required?: boolean | undefined;

  /**
   * @generated from field: optional soulfire.v1.TextComponent prompt = 6;
   */
  prompt?: TextComponent | undefined;
};

/**
 * Describes the message soulfire.v1.BotResourcePackEvent.
 * Use `create(BotResourcePackEventSchema)` to create a new message.
 */
export const BotResourcePackEventSchema: GenMessage<BotResourcePackEvent> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 22);

/**
 * @generated from message soulfire.v1.BotTitleEvent
 */
export type BotTitleEvent = Message<"soulfire.v1.BotTitleEvent"> & {
  /**
   * @generated from field: soulfire.v1.TitleEventKind kind = 1;
   */
  kind: TitleEventKind;

  /**
   * @generated from field: optional soulfire.v1.TextComponent text = 2;
   */
  text?: TextComponent | undefined;

  /**
   * @generated from field: optional int32 fade_in_ticks = 3;
   */
  fadeInTicks?: number | undefined;

  /**
   * @generated from field: optional int32 stay_ticks = 4;
   */
  stayTicks?: number | undefined;

  /**
   * @generated from field: optional int32 fade_out_ticks = 5;
   */
  fadeOutTicks?: number | undefined;
};

/**
 * Describes the message soulfire.v1.BotTitleEvent.
 * Use `create(BotTitleEventSchema)` to create a new message.
 */
export const BotTitleEventSchema: GenMessage<BotTitleEvent> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 23);

/**
 * @generated from message soulfire.v1.BotChunkEvent
 */
export type BotChunkEvent = Message<"soulfire.v1.BotChunkEvent"> & {
  /**
   * @generated from field: soulfire.v1.ChunkEventKind kind = 1;
   */
  kind: ChunkEventKind;

  /**
   * @generated from field: int32 chunk_x = 2;
   */
  chunkX: number;

  /**
   * @generated from field: int32 chunk_z = 3;
   */
  chunkZ: number;

  /**
   * @generated from field: string dimension = 4;
   */
  dimension: string;
};

/**
 * Describes the message soulfire.v1.BotChunkEvent.
 * Use `create(BotChunkEventSchema)` to create a new message.
 */
export const BotChunkEventSchema: GenMessage<BotChunkEvent> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 24);

/**
 * Metadata shared by every event emitted on a bot stream.
 *
 * @generated from message soulfire.v1.BotEventEnvelope
 */
export type BotEventEnvelope = Message<"soulfire.v1.BotEventEnvelope"> & {
  /**
   * @generated from field: string bot_id = 1;
   */
  botId: string;

  /**
   * @generated from field: string stream_epoch = 2;
   */
  streamEpoch: string;

  /**
   * @generated from field: uint64 sequence = 3;
   */
  sequence: bigint;

  /**
   * @generated from field: google.protobuf.Timestamp observed_at = 4;
   */
  observedAt?: Timestamp | undefined;

  /**
   * @generated from field: uint64 snapshot_revision = 5;
   */
  snapshotRevision: bigint;

  /**
   * @generated from field: optional string causation_id = 6;
   */
  causationId?: string | undefined;

  /**
   * @generated from field: optional string task_id = 7;
   */
  taskId?: string | undefined;
};

/**
 * Describes the message soulfire.v1.BotEventEnvelope.
 * Use `create(BotEventEnvelopeSchema)` to create a new message.
 */
export const BotEventEnvelopeSchema: GenMessage<BotEventEnvelope> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 25);

/**
 * Signals that continuity could not be preserved and the caller must replace
 * its synchronized state with the snapshots that follow.
 *
 * @generated from message soulfire.v1.BotResyncRequired
 */
export type BotResyncRequired = Message<"soulfire.v1.BotResyncRequired"> & {
  /**
   * @generated from field: string reason = 1;
   */
  reason: string;

  /**
   * @generated from field: optional string requested_epoch = 2;
   */
  requestedEpoch?: string | undefined;

  /**
   * @generated from field: uint64 requested_after_sequence = 3;
   */
  requestedAfterSequence: bigint;
};

/**
 * Describes the message soulfire.v1.BotResyncRequired.
 * Use `create(BotResyncRequiredSchema)` to create a new message.
 */
export const BotResyncRequiredSchema: GenMessage<BotResyncRequired> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 26);

/**
 * Keeps idle streams observable and allows clients to detect dead transports.
 *
 * @generated from message soulfire.v1.BotHeartbeat
 */
export type BotHeartbeat = Message<"soulfire.v1.BotHeartbeat"> & {
};

/**
 * Describes the message soulfire.v1.BotHeartbeat.
 * Use `create(BotHeartbeatSchema)` to create a new message.
 */
export const BotHeartbeatSchema: GenMessage<BotHeartbeat> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 27);

/**
 * A single message on the bot event stream.
 *
 * @generated from message soulfire.v1.BotEvent
 */
export type BotEvent = Message<"soulfire.v1.BotEvent"> & {
  /**
   * @generated from oneof soulfire.v1.BotEvent.event
   */
  event: {
    /**
     * Initial snapshot or periodic resync. Sent once on stream open and any
     * time the server detects the client's view may have diverged.
     *
     * @generated from field: soulfire.v1.BotLiveState snapshot = 1;
     */
    value: BotLiveState;
    case: "snapshot";
  } | {
    /**
     * @generated from field: soulfire.v1.BotStateDelta state_delta = 2;
     */
    value: BotStateDelta;
    case: "stateDelta";
  } | {
    /**
     * @generated from field: soulfire.v1.BotChatEvent chat = 3;
     */
    value: BotChatEvent;
    case: "chat";
  } | {
    /**
     * @generated from field: soulfire.v1.BotLifecycleEvent lifecycle = 4;
     */
    value: BotLifecycleEvent;
    case: "lifecycle";
  } | {
    /**
     * @generated from field: soulfire.v1.BotEntityEvent entity_event = 5;
     */
    value: BotEntityEvent;
    case: "entityEvent";
  } | {
    /**
     * @generated from field: soulfire.v1.BotBlockUpdateEvent block_update = 6;
     */
    value: BotBlockUpdateEvent;
    case: "blockUpdate";
  } | {
    /**
     * Persistent desired state and controller state. This is emitted first and
     * whenever it changes, including while the bot is offline or reconnecting.
     *
     * @generated from field: soulfire.v1.BotStatus status = 7;
     */
    value: BotStatus;
    case: "status";
  } | {
    /**
     * @generated from field: soulfire.v1.BotInventoryEvent inventory = 8;
     */
    value: BotInventoryEvent;
    case: "inventory";
  } | {
    /**
     * @generated from field: soulfire.v1.BotDamageEvent damage = 9;
     */
    value: BotDamageEvent;
    case: "damage";
  } | {
    /**
     * @generated from field: soulfire.v1.BotResyncRequired resync_required = 10;
     */
    value: BotResyncRequired;
    case: "resyncRequired";
  } | {
    /**
     * @generated from field: soulfire.v1.BotHeartbeat heartbeat = 11;
     */
    value: BotHeartbeat;
    case: "heartbeat";
  } | {
    /**
     * @generated from field: soulfire.v1.BotEnvironmentEvent environment = 12;
     */
    value: BotEnvironmentEvent;
    case: "environment";
  } | {
    /**
     * @generated from field: soulfire.v1.BotPlayerListEvent player_list = 13;
     */
    value: BotPlayerListEvent;
    case: "playerList";
  } | {
    /**
     * @generated from field: soulfire.v1.BotBossBarEvent boss_bar = 14;
     */
    value: BotBossBarEvent;
    case: "bossBar";
  } | {
    /**
     * @generated from field: soulfire.v1.BotSoundEvent sound = 15;
     */
    value: BotSoundEvent;
    case: "sound";
  } | {
    /**
     * @generated from field: soulfire.v1.BotParticleEvent particle = 16;
     */
    value: BotParticleEvent;
    case: "particle";
  } | {
    /**
     * @generated from field: soulfire.v1.BotScoreboardEvent scoreboard = 17;
     */
    value: BotScoreboardEvent;
    case: "scoreboard";
  } | {
    /**
     * @generated from field: soulfire.v1.BotResourcePackEvent resource_pack = 18;
     */
    value: BotResourcePackEvent;
    case: "resourcePack";
  } | {
    /**
     * @generated from field: soulfire.v1.BotTitleEvent title = 19;
     */
    value: BotTitleEvent;
    case: "title";
  } | {
    /**
     * @generated from field: soulfire.v1.BotChunkEvent chunk = 21;
     */
    value: BotChunkEvent;
    case: "chunk";
  } | { case: undefined; value?: undefined };

  /**
   * @generated from field: soulfire.v1.BotEventEnvelope envelope = 20;
   */
  envelope?: BotEventEnvelope | undefined;
};

/**
 * Describes the message soulfire.v1.BotEvent.
 * Use `create(BotEventSchema)` to create a new message.
 */
export const BotEventSchema: GenMessage<BotEvent> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 28);

/**
 * @generated from message soulfire.v1.BotActionResult
 */
export type BotActionResult = Message<"soulfire.v1.BotActionResult"> & {
  /**
   * @generated from field: string action_id = 1;
   */
  actionId: string;

  /**
   * @generated from field: soulfire.v1.BotActionStatus status = 2;
   */
  status: BotActionStatus;

  /**
   * @generated from field: optional string error = 3;
   */
  error?: string | undefined;
};

/**
 * Describes the message soulfire.v1.BotActionResult.
 * Use `create(BotActionResultSchema)` to create a new message.
 */
export const BotActionResultSchema: GenMessage<BotActionResult> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 29);

/**
 * @generated from message soulfire.v1.SendChatRequest
 */
export type SendChatRequest = Message<"soulfire.v1.SendChatRequest"> & {
  /**
   * @generated from field: string instance_id = 1;
   */
  instanceId: string;

  /**
   * @generated from field: string bot_id = 2;
   */
  botId: string;

  /**
   * The chat message to send. Treated as a literal chat message. To execute a
   * slash command, include the leading "/"; the server will route it
   * appropriately.
   *
   * @generated from field: string message = 3;
   */
  message: string;
};

/**
 * Describes the message soulfire.v1.SendChatRequest.
 * Use `create(SendChatRequestSchema)` to create a new message.
 */
export const SendChatRequestSchema: GenMessage<SendChatRequest> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 30);

/**
 * @generated from message soulfire.v1.SendChatResponse
 */
export type SendChatResponse = Message<"soulfire.v1.SendChatResponse"> & {
  /**
   * @generated from field: soulfire.v1.BotActionResult result = 1;
   */
  result?: BotActionResult | undefined;
};

/**
 * Describes the message soulfire.v1.SendChatResponse.
 * Use `create(SendChatResponseSchema)` to create a new message.
 */
export const SendChatResponseSchema: GenMessage<SendChatResponse> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 31);

/**
 * @generated from message soulfire.v1.GetBlockRequest
 */
export type GetBlockRequest = Message<"soulfire.v1.GetBlockRequest"> & {
  /**
   * @generated from field: string instance_id = 1;
   */
  instanceId: string;

  /**
   * @generated from field: string bot_id = 2;
   */
  botId: string;

  /**
   * @generated from field: soulfire.v1.BlockPosition position = 3;
   */
  position?: BlockPosition | undefined;
};

/**
 * Describes the message soulfire.v1.GetBlockRequest.
 * Use `create(GetBlockRequestSchema)` to create a new message.
 */
export const GetBlockRequestSchema: GenMessage<GetBlockRequest> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 32);

/**
 * @generated from message soulfire.v1.GetBlockResponse
 */
export type GetBlockResponse = Message<"soulfire.v1.GetBlockResponse"> & {
  /**
   * True if the chunk containing the requested position is loaded for this
   * bot. When false, the block field is not populated.
   *
   * @generated from field: bool loaded = 1;
   */
  loaded: boolean;

  /**
   * The observed block state. Absent when loaded is false.
   *
   * @generated from field: optional soulfire.v1.BlockState block = 2;
   */
  block?: BlockState | undefined;
};

/**
 * Describes the message soulfire.v1.GetBlockResponse.
 * Use `create(GetBlockResponseSchema)` to create a new message.
 */
export const GetBlockResponseSchema: GenMessage<GetBlockResponse> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 33);

/**
 * @generated from message soulfire.v1.FindBlocksRequest
 */
export type FindBlocksRequest = Message<"soulfire.v1.FindBlocksRequest"> & {
  /**
   * @generated from field: string instance_id = 1;
   */
  instanceId: string;

  /**
   * @generated from field: string bot_id = 2;
   */
  botId: string;

  /**
   * Block ids to match (namespaced, e.g. "minecraft:diamond_ore"). A block
   * matches if its id equals any entry in this list.
   *
   * @generated from field: repeated string block_ids = 3;
   */
  blockIds: string[];

  /**
   * Maximum search radius in blocks, measured from the bot's current block
   * position. Server clamps to an implementation-defined maximum.
   *
   * @generated from field: int32 max_distance = 4;
   */
  maxDistance: number;

  /**
   * Maximum number of matches to return. Results are ordered by ascending
   * distance from the bot.
   *
   * @generated from field: int32 max_count = 5;
   */
  maxCount: number;
};

/**
 * Describes the message soulfire.v1.FindBlocksRequest.
 * Use `create(FindBlocksRequestSchema)` to create a new message.
 */
export const FindBlocksRequestSchema: GenMessage<FindBlocksRequest> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 34);

/**
 * @generated from message soulfire.v1.FindBlocksResponse
 */
export type FindBlocksResponse = Message<"soulfire.v1.FindBlocksResponse"> & {
  /**
   * @generated from field: repeated soulfire.v1.BlockState blocks = 1;
   */
  blocks: BlockState[];
};

/**
 * Describes the message soulfire.v1.FindBlocksResponse.
 * Use `create(FindBlocksResponseSchema)` to create a new message.
 */
export const FindBlocksResponseSchema: GenMessage<FindBlocksResponse> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 35);

/**
 * @generated from message soulfire.v1.ListNearbyEntitiesRequest
 */
export type ListNearbyEntitiesRequest = Message<"soulfire.v1.ListNearbyEntitiesRequest"> & {
  /**
   * @generated from field: string instance_id = 1;
   */
  instanceId: string;

  /**
   * @generated from field: string bot_id = 2;
   */
  botId: string;

  /**
   * Maximum radius in blocks from the bot. Server clamps to an
   * implementation-defined maximum.
   *
   * @generated from field: float radius = 3;
   */
  radius: number;

  /**
   * Optional filter: if non-empty, only entities whose namespaced type is in
   * this list are returned.
   *
   * @generated from field: repeated string entity_types = 4;
   */
  entityTypes: string[];

  /**
   * If true, include players in the result. Defaults to true.
   *
   * @generated from field: bool include_players = 5;
   */
  includePlayers: boolean;
};

/**
 * Describes the message soulfire.v1.ListNearbyEntitiesRequest.
 * Use `create(ListNearbyEntitiesRequestSchema)` to create a new message.
 */
export const ListNearbyEntitiesRequestSchema: GenMessage<ListNearbyEntitiesRequest> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 36);

/**
 * @generated from message soulfire.v1.ListNearbyEntitiesResponse
 */
export type ListNearbyEntitiesResponse = Message<"soulfire.v1.ListNearbyEntitiesResponse"> & {
  /**
   * Entities ordered by ascending distance from the bot.
   *
   * @generated from field: repeated soulfire.v1.NearbyEntity entities = 1;
   */
  entities: NearbyEntity[];
};

/**
 * Describes the message soulfire.v1.ListNearbyEntitiesResponse.
 * Use `create(ListNearbyEntitiesResponseSchema)` to create a new message.
 */
export const ListNearbyEntitiesResponseSchema: GenMessage<ListNearbyEntitiesResponse> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 37);

/**
 * @generated from message soulfire.v1.DigBlockRequest
 */
export type DigBlockRequest = Message<"soulfire.v1.DigBlockRequest"> & {
  /**
   * @generated from field: string instance_id = 1;
   */
  instanceId: string;

  /**
   * @generated from field: string bot_id = 2;
   */
  botId: string;

  /**
   * Block to break. Must be within reach of the bot.
   *
   * @generated from field: soulfire.v1.BlockPosition position = 3;
   */
  position?: BlockPosition | undefined;

  /**
   * If true, cancel an in-progress dig on this block instead of starting one.
   *
   * @generated from field: bool cancel = 4;
   */
  cancel: boolean;
};

/**
 * Describes the message soulfire.v1.DigBlockRequest.
 * Use `create(DigBlockRequestSchema)` to create a new message.
 */
export const DigBlockRequestSchema: GenMessage<DigBlockRequest> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 38);

/**
 * @generated from message soulfire.v1.DigBlockResponse
 */
export type DigBlockResponse = Message<"soulfire.v1.DigBlockResponse"> & {
  /**
   * @generated from field: soulfire.v1.BotActionResult result = 1;
   */
  result?: BotActionResult | undefined;
};

/**
 * Describes the message soulfire.v1.DigBlockResponse.
 * Use `create(DigBlockResponseSchema)` to create a new message.
 */
export const DigBlockResponseSchema: GenMessage<DigBlockResponse> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 39);

/**
 * @generated from message soulfire.v1.PlaceBlockRequest
 */
export type PlaceBlockRequest = Message<"soulfire.v1.PlaceBlockRequest"> & {
  /**
   * @generated from field: string instance_id = 1;
   */
  instanceId: string;

  /**
   * @generated from field: string bot_id = 2;
   */
  botId: string;

  /**
   * The block the bot is placing against (the block being clicked).
   *
   * @generated from field: soulfire.v1.BlockPosition against = 3;
   */
  against?: BlockPosition | undefined;

  /**
   * Which face of `against` is being clicked. The new block is placed adjacent
   * to that face.
   *
   * @generated from field: soulfire.v1.BlockFace face = 4;
   */
  face: BlockFace;

  /**
   * Which hand holds the item being placed.
   *
   * @generated from field: soulfire.v1.Hand hand = 5;
   */
  hand: Hand;
};

/**
 * Describes the message soulfire.v1.PlaceBlockRequest.
 * Use `create(PlaceBlockRequestSchema)` to create a new message.
 */
export const PlaceBlockRequestSchema: GenMessage<PlaceBlockRequest> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 40);

/**
 * @generated from message soulfire.v1.PlaceBlockResponse
 */
export type PlaceBlockResponse = Message<"soulfire.v1.PlaceBlockResponse"> & {
  /**
   * @generated from field: soulfire.v1.BotActionResult result = 1;
   */
  result?: BotActionResult | undefined;
};

/**
 * Describes the message soulfire.v1.PlaceBlockResponse.
 * Use `create(PlaceBlockResponseSchema)` to create a new message.
 */
export const PlaceBlockResponseSchema: GenMessage<PlaceBlockResponse> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 41);

/**
 * @generated from message soulfire.v1.InteractBlockRequest
 */
export type InteractBlockRequest = Message<"soulfire.v1.InteractBlockRequest"> & {
  /**
   * @generated from field: string instance_id = 1;
   */
  instanceId: string;

  /**
   * @generated from field: string bot_id = 2;
   */
  botId: string;

  /**
   * Block to activate. Must be loaded and within interaction reach.
   *
   * @generated from field: soulfire.v1.BlockPosition position = 3;
   */
  position?: BlockPosition | undefined;

  /**
   * Face to click.
   *
   * @generated from field: soulfire.v1.BlockFace face = 4;
   */
  face: BlockFace;

  /**
   * @generated from field: soulfire.v1.Hand hand = 5;
   */
  hand: Hand;

  /**
   * Temporarily sneaks for this interaction. Useful when activating a block
   * while holding an item whose normal use would take precedence.
   *
   * @generated from field: bool sneaking = 6;
   */
  sneaking: boolean;
};

/**
 * Describes the message soulfire.v1.InteractBlockRequest.
 * Use `create(InteractBlockRequestSchema)` to create a new message.
 */
export const InteractBlockRequestSchema: GenMessage<InteractBlockRequest> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 42);

/**
 * @generated from message soulfire.v1.InteractBlockResponse
 */
export type InteractBlockResponse = Message<"soulfire.v1.InteractBlockResponse"> & {
  /**
   * @generated from field: soulfire.v1.BotActionResult result = 1;
   */
  result?: BotActionResult | undefined;
};

/**
 * Describes the message soulfire.v1.InteractBlockResponse.
 * Use `create(InteractBlockResponseSchema)` to create a new message.
 */
export const InteractBlockResponseSchema: GenMessage<InteractBlockResponse> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 43);

/**
 * @generated from message soulfire.v1.UseItemRequest
 */
export type UseItemRequest = Message<"soulfire.v1.UseItemRequest"> & {
  /**
   * @generated from field: string instance_id = 1;
   */
  instanceId: string;

  /**
   * @generated from field: string bot_id = 2;
   */
  botId: string;

  /**
   * Which hand's item to use (e.g. eat food, draw a bow, throw a splash
   * potion).
   *
   * @generated from field: soulfire.v1.Hand hand = 3;
   */
  hand: Hand;
};

/**
 * Describes the message soulfire.v1.UseItemRequest.
 * Use `create(UseItemRequestSchema)` to create a new message.
 */
export const UseItemRequestSchema: GenMessage<UseItemRequest> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 44);

/**
 * @generated from message soulfire.v1.UseItemResponse
 */
export type UseItemResponse = Message<"soulfire.v1.UseItemResponse"> & {
  /**
   * @generated from field: soulfire.v1.BotActionResult result = 1;
   */
  result?: BotActionResult | undefined;
};

/**
 * Describes the message soulfire.v1.UseItemResponse.
 * Use `create(UseItemResponseSchema)` to create a new message.
 */
export const UseItemResponseSchema: GenMessage<UseItemResponse> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 45);

/**
 * @generated from message soulfire.v1.ReleaseItemRequest
 */
export type ReleaseItemRequest = Message<"soulfire.v1.ReleaseItemRequest"> & {
  /**
   * @generated from field: string instance_id = 1;
   */
  instanceId: string;

  /**
   * @generated from field: string bot_id = 2;
   */
  botId: string;
};

/**
 * Describes the message soulfire.v1.ReleaseItemRequest.
 * Use `create(ReleaseItemRequestSchema)` to create a new message.
 */
export const ReleaseItemRequestSchema: GenMessage<ReleaseItemRequest> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 46);

/**
 * @generated from message soulfire.v1.ReleaseItemResponse
 */
export type ReleaseItemResponse = Message<"soulfire.v1.ReleaseItemResponse"> & {
  /**
   * @generated from field: soulfire.v1.BotActionResult result = 1;
   */
  result?: BotActionResult | undefined;
};

/**
 * Describes the message soulfire.v1.ReleaseItemResponse.
 * Use `create(ReleaseItemResponseSchema)` to create a new message.
 */
export const ReleaseItemResponseSchema: GenMessage<ReleaseItemResponse> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 47);

/**
 * @generated from message soulfire.v1.AttackEntityRequest
 */
export type AttackEntityRequest = Message<"soulfire.v1.AttackEntityRequest"> & {
  /**
   * @generated from field: string instance_id = 1;
   */
  instanceId: string;

  /**
   * @generated from field: string bot_id = 2;
   */
  botId: string;

  /**
   * Network entity id from NearbyEntity.entity_id. Must currently be in the
   * bot's observation set.
   *
   * @generated from field: int32 entity_id = 3;
   */
  entityId: number;

  /**
   * If true, perform a sprint-boosted critical hit when applicable (swings
   * the main hand and applies knockback).
   *
   * @generated from field: bool sprinting = 4;
   */
  sprinting: boolean;

  /**
   * Observation epoch that produced entity_id. When present, the action fails
   * if the bot has reconnected since that observation.
   *
   * @generated from field: optional string connection_epoch = 5;
   */
  connectionEpoch?: string | undefined;
};

/**
 * Describes the message soulfire.v1.AttackEntityRequest.
 * Use `create(AttackEntityRequestSchema)` to create a new message.
 */
export const AttackEntityRequestSchema: GenMessage<AttackEntityRequest> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 48);

/**
 * @generated from message soulfire.v1.AttackEntityResponse
 */
export type AttackEntityResponse = Message<"soulfire.v1.AttackEntityResponse"> & {
  /**
   * @generated from field: soulfire.v1.BotActionResult result = 1;
   */
  result?: BotActionResult | undefined;
};

/**
 * Describes the message soulfire.v1.AttackEntityResponse.
 * Use `create(AttackEntityResponseSchema)` to create a new message.
 */
export const AttackEntityResponseSchema: GenMessage<AttackEntityResponse> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 49);

/**
 * @generated from message soulfire.v1.InteractEntityRequest
 */
export type InteractEntityRequest = Message<"soulfire.v1.InteractEntityRequest"> & {
  /**
   * @generated from field: string instance_id = 1;
   */
  instanceId: string;

  /**
   * @generated from field: string bot_id = 2;
   */
  botId: string;

  /**
   * Network entity id from NearbyEntity.entity_id.
   *
   * @generated from field: int32 entity_id = 3;
   */
  entityId: number;

  /**
   * Which hand to interact with.
   *
   * @generated from field: soulfire.v1.Hand hand = 4;
   */
  hand: Hand;

  /**
   * True if the bot is sneaking during the interaction (affects e.g. whether
   * a villager trade menu opens).
   *
   * @generated from field: bool sneaking = 5;
   */
  sneaking: boolean;

  /**
   * Observation epoch that produced entity_id. When present, the action fails
   * if the bot has reconnected since that observation.
   *
   * @generated from field: optional string connection_epoch = 6;
   */
  connectionEpoch?: string | undefined;
};

/**
 * Describes the message soulfire.v1.InteractEntityRequest.
 * Use `create(InteractEntityRequestSchema)` to create a new message.
 */
export const InteractEntityRequestSchema: GenMessage<InteractEntityRequest> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 50);

/**
 * @generated from message soulfire.v1.InteractEntityResponse
 */
export type InteractEntityResponse = Message<"soulfire.v1.InteractEntityResponse"> & {
  /**
   * @generated from field: soulfire.v1.BotActionResult result = 1;
   */
  result?: BotActionResult | undefined;
};

/**
 * Describes the message soulfire.v1.InteractEntityResponse.
 * Use `create(InteractEntityResponseSchema)` to create a new message.
 */
export const InteractEntityResponseSchema: GenMessage<InteractEntityResponse> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 51);

/**
 * @generated from message soulfire.v1.SwingArmRequest
 */
export type SwingArmRequest = Message<"soulfire.v1.SwingArmRequest"> & {
  /**
   * @generated from field: string instance_id = 1;
   */
  instanceId: string;

  /**
   * @generated from field: string bot_id = 2;
   */
  botId: string;

  /**
   * @generated from field: soulfire.v1.Hand hand = 3;
   */
  hand: Hand;
};

/**
 * Describes the message soulfire.v1.SwingArmRequest.
 * Use `create(SwingArmRequestSchema)` to create a new message.
 */
export const SwingArmRequestSchema: GenMessage<SwingArmRequest> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 52);

/**
 * @generated from message soulfire.v1.SwingArmResponse
 */
export type SwingArmResponse = Message<"soulfire.v1.SwingArmResponse"> & {
  /**
   * @generated from field: soulfire.v1.BotActionResult result = 1;
   */
  result?: BotActionResult | undefined;
};

/**
 * Describes the message soulfire.v1.SwingArmResponse.
 * Use `create(SwingArmResponseSchema)` to create a new message.
 */
export const SwingArmResponseSchema: GenMessage<SwingArmResponse> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 53);

/**
 * @generated from message soulfire.v1.RespawnRequest
 */
export type RespawnRequest = Message<"soulfire.v1.RespawnRequest"> & {
  /**
   * @generated from field: string instance_id = 1;
   */
  instanceId: string;

  /**
   * @generated from field: string bot_id = 2;
   */
  botId: string;
};

/**
 * Describes the message soulfire.v1.RespawnRequest.
 * Use `create(RespawnRequestSchema)` to create a new message.
 */
export const RespawnRequestSchema: GenMessage<RespawnRequest> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 54);

/**
 * @generated from message soulfire.v1.RespawnResponse
 */
export type RespawnResponse = Message<"soulfire.v1.RespawnResponse"> & {
  /**
   * @generated from field: soulfire.v1.BotActionResult result = 1;
   */
  result?: BotActionResult | undefined;
};

/**
 * Describes the message soulfire.v1.RespawnResponse.
 * Use `create(RespawnResponseSchema)` to create a new message.
 */
export const RespawnResponseSchema: GenMessage<RespawnResponse> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 55);

/**
 * @generated from message soulfire.v1.SleepRequest
 */
export type SleepRequest = Message<"soulfire.v1.SleepRequest"> & {
  /**
   * @generated from field: string instance_id = 1;
   */
  instanceId: string;

  /**
   * @generated from field: string bot_id = 2;
   */
  botId: string;

  /**
   * @generated from field: soulfire.v1.BlockPosition bed = 3;
   */
  bed?: BlockPosition | undefined;

  /**
   * @generated from field: soulfire.v1.Hand hand = 4;
   */
  hand: Hand;
};

/**
 * Describes the message soulfire.v1.SleepRequest.
 * Use `create(SleepRequestSchema)` to create a new message.
 */
export const SleepRequestSchema: GenMessage<SleepRequest> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 56);

/**
 * @generated from message soulfire.v1.SleepResponse
 */
export type SleepResponse = Message<"soulfire.v1.SleepResponse"> & {
  /**
   * @generated from field: soulfire.v1.BotActionResult result = 1;
   */
  result?: BotActionResult | undefined;
};

/**
 * Describes the message soulfire.v1.SleepResponse.
 * Use `create(SleepResponseSchema)` to create a new message.
 */
export const SleepResponseSchema: GenMessage<SleepResponse> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 57);

/**
 * @generated from message soulfire.v1.WakeRequest
 */
export type WakeRequest = Message<"soulfire.v1.WakeRequest"> & {
  /**
   * @generated from field: string instance_id = 1;
   */
  instanceId: string;

  /**
   * @generated from field: string bot_id = 2;
   */
  botId: string;
};

/**
 * Describes the message soulfire.v1.WakeRequest.
 * Use `create(WakeRequestSchema)` to create a new message.
 */
export const WakeRequestSchema: GenMessage<WakeRequest> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 58);

/**
 * @generated from message soulfire.v1.WakeResponse
 */
export type WakeResponse = Message<"soulfire.v1.WakeResponse"> & {
  /**
   * @generated from field: soulfire.v1.BotActionResult result = 1;
   */
  result?: BotActionResult | undefined;
};

/**
 * Describes the message soulfire.v1.WakeResponse.
 * Use `create(WakeResponseSchema)` to create a new message.
 */
export const WakeResponseSchema: GenMessage<WakeResponse> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 59);

/**
 * @generated from message soulfire.v1.MountEntityRequest
 */
export type MountEntityRequest = Message<"soulfire.v1.MountEntityRequest"> & {
  /**
   * @generated from field: string instance_id = 1;
   */
  instanceId: string;

  /**
   * @generated from field: string bot_id = 2;
   */
  botId: string;

  /**
   * @generated from field: int32 entity_id = 3;
   */
  entityId: number;

  /**
   * @generated from field: soulfire.v1.Hand hand = 4;
   */
  hand: Hand;

  /**
   * Observation epoch that produced entity_id. When present, the action fails
   * if the bot has reconnected since that observation.
   *
   * @generated from field: optional string connection_epoch = 5;
   */
  connectionEpoch?: string | undefined;
};

/**
 * Describes the message soulfire.v1.MountEntityRequest.
 * Use `create(MountEntityRequestSchema)` to create a new message.
 */
export const MountEntityRequestSchema: GenMessage<MountEntityRequest> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 60);

/**
 * @generated from message soulfire.v1.MountEntityResponse
 */
export type MountEntityResponse = Message<"soulfire.v1.MountEntityResponse"> & {
  /**
   * @generated from field: soulfire.v1.BotActionResult result = 1;
   */
  result?: BotActionResult | undefined;

  /**
   * @generated from field: optional soulfire.v1.EntityReference vehicle = 2;
   */
  vehicle?: EntityReference | undefined;
};

/**
 * Describes the message soulfire.v1.MountEntityResponse.
 * Use `create(MountEntityResponseSchema)` to create a new message.
 */
export const MountEntityResponseSchema: GenMessage<MountEntityResponse> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 61);

/**
 * @generated from message soulfire.v1.DismountRequest
 */
export type DismountRequest = Message<"soulfire.v1.DismountRequest"> & {
  /**
   * @generated from field: string instance_id = 1;
   */
  instanceId: string;

  /**
   * @generated from field: string bot_id = 2;
   */
  botId: string;
};

/**
 * Describes the message soulfire.v1.DismountRequest.
 * Use `create(DismountRequestSchema)` to create a new message.
 */
export const DismountRequestSchema: GenMessage<DismountRequest> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 62);

/**
 * @generated from message soulfire.v1.DismountResponse
 */
export type DismountResponse = Message<"soulfire.v1.DismountResponse"> & {
  /**
   * @generated from field: soulfire.v1.BotActionResult result = 1;
   */
  result?: BotActionResult | undefined;
};

/**
 * Describes the message soulfire.v1.DismountResponse.
 * Use `create(DismountResponseSchema)` to create a new message.
 */
export const DismountResponseSchema: GenMessage<DismountResponse> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 63);

/**
 * @generated from message soulfire.v1.SetVehicleControlRequest
 */
export type SetVehicleControlRequest = Message<"soulfire.v1.SetVehicleControlRequest"> & {
  /**
   * @generated from field: string instance_id = 1;
   */
  instanceId: string;

  /**
   * @generated from field: string bot_id = 2;
   */
  botId: string;

  /**
   * @generated from field: optional bool forward = 3;
   */
  forward?: boolean | undefined;

  /**
   * @generated from field: optional bool backward = 4;
   */
  backward?: boolean | undefined;

  /**
   * @generated from field: optional bool left = 5;
   */
  left?: boolean | undefined;

  /**
   * @generated from field: optional bool right = 6;
   */
  right?: boolean | undefined;

  /**
   * @generated from field: optional bool jump = 7;
   */
  jump?: boolean | undefined;

  /**
   * @generated from field: optional bool sneak = 8;
   */
  sneak?: boolean | undefined;

  /**
   * @generated from field: optional bool sprint = 9;
   */
  sprint?: boolean | undefined;

  /**
   * @generated from field: optional float yaw = 10;
   */
  yaw?: number | undefined;

  /**
   * @generated from field: optional float pitch = 11;
   */
  pitch?: number | undefined;
};

/**
 * Describes the message soulfire.v1.SetVehicleControlRequest.
 * Use `create(SetVehicleControlRequestSchema)` to create a new message.
 */
export const SetVehicleControlRequestSchema: GenMessage<SetVehicleControlRequest> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 64);

/**
 * @generated from message soulfire.v1.SetVehicleControlResponse
 */
export type SetVehicleControlResponse = Message<"soulfire.v1.SetVehicleControlResponse"> & {
  /**
   * @generated from field: soulfire.v1.BotActionResult result = 1;
   */
  result?: BotActionResult | undefined;

  /**
   * @generated from field: optional soulfire.v1.EntityReference vehicle = 2;
   */
  vehicle?: EntityReference | undefined;
};

/**
 * Describes the message soulfire.v1.SetVehicleControlResponse.
 * Use `create(SetVehicleControlResponseSchema)` to create a new message.
 */
export const SetVehicleControlResponseSchema: GenMessage<SetVehicleControlResponse> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 65);

/**
 * @generated from message soulfire.v1.UpdateSignRequest
 */
export type UpdateSignRequest = Message<"soulfire.v1.UpdateSignRequest"> & {
  /**
   * @generated from field: string instance_id = 1;
   */
  instanceId: string;

  /**
   * @generated from field: string bot_id = 2;
   */
  botId: string;

  /**
   * @generated from field: soulfire.v1.BlockPosition position = 3;
   */
  position?: BlockPosition | undefined;

  /**
   * @generated from field: bool front_text = 4;
   */
  frontText: boolean;

  /**
   * Exactly four plain-text lines. Empty strings clear lines.
   *
   * @generated from field: repeated string lines = 5;
   */
  lines: string[];
};

/**
 * Describes the message soulfire.v1.UpdateSignRequest.
 * Use `create(UpdateSignRequestSchema)` to create a new message.
 */
export const UpdateSignRequestSchema: GenMessage<UpdateSignRequest> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 66);

/**
 * @generated from message soulfire.v1.UpdateSignResponse
 */
export type UpdateSignResponse = Message<"soulfire.v1.UpdateSignResponse"> & {
  /**
   * @generated from field: soulfire.v1.BotActionResult result = 1;
   */
  result?: BotActionResult | undefined;
};

/**
 * Describes the message soulfire.v1.UpdateSignResponse.
 * Use `create(UpdateSignResponseSchema)` to create a new message.
 */
export const UpdateSignResponseSchema: GenMessage<UpdateSignResponse> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 67);

/**
 * @generated from message soulfire.v1.WriteBookRequest
 */
export type WriteBookRequest = Message<"soulfire.v1.WriteBookRequest"> & {
  /**
   * @generated from field: string instance_id = 1;
   */
  instanceId: string;

  /**
   * @generated from field: string bot_id = 2;
   */
  botId: string;

  /**
   * Player inventory slot from zero through eight containing a writable book.
   *
   * @generated from field: int32 inventory_slot = 3;
   */
  inventorySlot: number;

  /**
   * @generated from field: repeated string pages = 4;
   */
  pages: string[];

  /**
   * Providing a title signs the book.
   *
   * @generated from field: optional string title = 5;
   */
  title?: string | undefined;
};

/**
 * Describes the message soulfire.v1.WriteBookRequest.
 * Use `create(WriteBookRequestSchema)` to create a new message.
 */
export const WriteBookRequestSchema: GenMessage<WriteBookRequest> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 68);

/**
 * @generated from message soulfire.v1.WriteBookResponse
 */
export type WriteBookResponse = Message<"soulfire.v1.WriteBookResponse"> & {
  /**
   * @generated from field: soulfire.v1.BotActionResult result = 1;
   */
  result?: BotActionResult | undefined;
};

/**
 * Describes the message soulfire.v1.WriteBookResponse.
 * Use `create(WriteBookResponseSchema)` to create a new message.
 */
export const WriteBookResponseSchema: GenMessage<WriteBookResponse> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 69);

/**
 * @generated from message soulfire.v1.RespondResourcePackRequest
 */
export type RespondResourcePackRequest = Message<"soulfire.v1.RespondResourcePackRequest"> & {
  /**
   * @generated from field: string instance_id = 1;
   */
  instanceId: string;

  /**
   * @generated from field: string bot_id = 2;
   */
  botId: string;

  /**
   * @generated from field: string pack_id = 3;
   */
  packId: string;

  /**
   * @generated from field: soulfire.v1.ResourcePackResponse response = 4;
   */
  response: ResourcePackResponse;
};

/**
 * Describes the message soulfire.v1.RespondResourcePackRequest.
 * Use `create(RespondResourcePackRequestSchema)` to create a new message.
 */
export const RespondResourcePackRequestSchema: GenMessage<RespondResourcePackRequest> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 70);

/**
 * @generated from message soulfire.v1.RespondResourcePackResponse
 */
export type RespondResourcePackResponse = Message<"soulfire.v1.RespondResourcePackResponse"> & {
  /**
   * @generated from field: soulfire.v1.BotActionResult result = 1;
   */
  result?: BotActionResult | undefined;
};

/**
 * Describes the message soulfire.v1.RespondResourcePackResponse.
 * Use `create(RespondResourcePackResponseSchema)` to create a new message.
 */
export const RespondResourcePackResponseSchema: GenMessage<RespondResourcePackResponse> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 71);

/**
 * @generated from message soulfire.v1.SetFlyingRequest
 */
export type SetFlyingRequest = Message<"soulfire.v1.SetFlyingRequest"> & {
  /**
   * @generated from field: string instance_id = 1;
   */
  instanceId: string;

  /**
   * @generated from field: string bot_id = 2;
   */
  botId: string;

  /**
   * @generated from field: bool flying = 3;
   */
  flying: boolean;
};

/**
 * Describes the message soulfire.v1.SetFlyingRequest.
 * Use `create(SetFlyingRequestSchema)` to create a new message.
 */
export const SetFlyingRequestSchema: GenMessage<SetFlyingRequest> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 72);

/**
 * @generated from message soulfire.v1.SetFlyingResponse
 */
export type SetFlyingResponse = Message<"soulfire.v1.SetFlyingResponse"> & {
  /**
   * @generated from field: soulfire.v1.BotActionResult result = 1;
   */
  result?: BotActionResult | undefined;
};

/**
 * Describes the message soulfire.v1.SetFlyingResponse.
 * Use `create(SetFlyingResponseSchema)` to create a new message.
 */
export const SetFlyingResponseSchema: GenMessage<SetFlyingResponse> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 73);

/**
 * @generated from message soulfire.v1.StartElytraFlightRequest
 */
export type StartElytraFlightRequest = Message<"soulfire.v1.StartElytraFlightRequest"> & {
  /**
   * @generated from field: string instance_id = 1;
   */
  instanceId: string;

  /**
   * @generated from field: string bot_id = 2;
   */
  botId: string;
};

/**
 * Describes the message soulfire.v1.StartElytraFlightRequest.
 * Use `create(StartElytraFlightRequestSchema)` to create a new message.
 */
export const StartElytraFlightRequestSchema: GenMessage<StartElytraFlightRequest> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 74);

/**
 * @generated from message soulfire.v1.StartElytraFlightResponse
 */
export type StartElytraFlightResponse = Message<"soulfire.v1.StartElytraFlightResponse"> & {
  /**
   * @generated from field: soulfire.v1.BotActionResult result = 1;
   */
  result?: BotActionResult | undefined;
};

/**
 * Describes the message soulfire.v1.StartElytraFlightResponse.
 * Use `create(StartElytraFlightResponseSchema)` to create a new message.
 */
export const StartElytraFlightResponseSchema: GenMessage<StartElytraFlightResponse> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 75);

/**
 * @generated from message soulfire.v1.CreativeItemStack
 */
export type CreativeItemStack = Message<"soulfire.v1.CreativeItemStack"> & {
  /**
   * @generated from field: string item_id = 1;
   */
  itemId: string;

  /**
   * @generated from field: int32 count = 2;
   */
  count: number;
};

/**
 * Describes the message soulfire.v1.CreativeItemStack.
 * Use `create(CreativeItemStackSchema)` to create a new message.
 */
export const CreativeItemStackSchema: GenMessage<CreativeItemStack> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 76);

/**
 * @generated from message soulfire.v1.SetCreativeSlotRequest
 */
export type SetCreativeSlotRequest = Message<"soulfire.v1.SetCreativeSlotRequest"> & {
  /**
   * @generated from field: string instance_id = 1;
   */
  instanceId: string;

  /**
   * @generated from field: string bot_id = 2;
   */
  botId: string;

  /**
   * Inventory-menu slot. Values zero through 45 are supported.
   *
   * @generated from field: int32 slot = 3;
   */
  slot: number;

  /**
   * Omit the item to clear the slot.
   *
   * @generated from field: optional soulfire.v1.CreativeItemStack item = 4;
   */
  item?: CreativeItemStack | undefined;
};

/**
 * Describes the message soulfire.v1.SetCreativeSlotRequest.
 * Use `create(SetCreativeSlotRequestSchema)` to create a new message.
 */
export const SetCreativeSlotRequestSchema: GenMessage<SetCreativeSlotRequest> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 77);

/**
 * @generated from message soulfire.v1.SetCreativeSlotResponse
 */
export type SetCreativeSlotResponse = Message<"soulfire.v1.SetCreativeSlotResponse"> & {
  /**
   * @generated from field: soulfire.v1.BotActionResult result = 1;
   */
  result?: BotActionResult | undefined;
};

/**
 * Describes the message soulfire.v1.SetCreativeSlotResponse.
 * Use `create(SetCreativeSlotResponseSchema)` to create a new message.
 */
export const SetCreativeSlotResponseSchema: GenMessage<SetCreativeSlotResponse> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 78);

/**
 * @generated from message soulfire.v1.WaitForChunksRequest
 */
export type WaitForChunksRequest = Message<"soulfire.v1.WaitForChunksRequest"> & {
  /**
   * @generated from field: string instance_id = 1;
   */
  instanceId: string;

  /**
   * @generated from field: string bot_id = 2;
   */
  botId: string;

  /**
   * Chebyshev radius around the bot's current chunk. Zero waits for only the
   * current chunk. The server rejects values above its safety limit.
   *
   * @generated from field: uint32 radius_chunks = 3;
   */
  radiusChunks: number;

  /**
   * Maximum wait in milliseconds. Zero uses the server default.
   *
   * @generated from field: uint32 timeout_ms = 4;
   */
  timeoutMs: number;
};

/**
 * Describes the message soulfire.v1.WaitForChunksRequest.
 * Use `create(WaitForChunksRequestSchema)` to create a new message.
 */
export const WaitForChunksRequestSchema: GenMessage<WaitForChunksRequest> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 79);

/**
 * @generated from message soulfire.v1.WaitForChunksResponse
 */
export type WaitForChunksResponse = Message<"soulfire.v1.WaitForChunksResponse"> & {
  /**
   * @generated from field: int32 center_chunk_x = 1;
   */
  centerChunkX: number;

  /**
   * @generated from field: int32 center_chunk_z = 2;
   */
  centerChunkZ: number;

  /**
   * @generated from field: uint32 loaded_chunks = 3;
   */
  loadedChunks: number;

  /**
   * @generated from field: uint32 required_chunks = 4;
   */
  requiredChunks: number;

  /**
   * @generated from field: string dimension = 5;
   */
  dimension: string;
};

/**
 * Describes the message soulfire.v1.WaitForChunksResponse.
 * Use `create(WaitForChunksResponseSchema)` to create a new message.
 */
export const WaitForChunksResponseSchema: GenMessage<WaitForChunksResponse> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 80);

/**
 * A pathfinding destination. Exactly one variant must be set.
 *
 * @generated from message soulfire.v1.PathfindGoal
 */
export type PathfindGoal = Message<"soulfire.v1.PathfindGoal"> & {
  /**
   * @generated from oneof soulfire.v1.PathfindGoal.goal
   */
  goal: {
    /**
     * @generated from field: soulfire.v1.PathfindGoal.BlockGoal block = 1;
     */
    value: PathfindGoal_BlockGoal;
    case: "block";
  } | {
    /**
     * @generated from field: soulfire.v1.PathfindGoal.NearGoal near = 2;
     */
    value: PathfindGoal_NearGoal;
    case: "near";
  } | {
    /**
     * @generated from field: soulfire.v1.PathfindGoal.EntityGoal entity = 3;
     */
    value: PathfindGoal_EntityGoal;
    case: "entity";
  } | {
    /**
     * @generated from field: soulfire.v1.PathfindGoal.XZGoal xz = 4;
     */
    value: PathfindGoal_XZGoal;
    case: "xz";
  } | {
    /**
     * @generated from field: soulfire.v1.PathfindGoal.YGoal y = 5;
     */
    value: PathfindGoal_YGoal;
    case: "y";
  } | {
    /**
     * @generated from field: soulfire.v1.PathfindGoal.BreakBlockGoal break_block = 6;
     */
    value: PathfindGoal_BreakBlockGoal;
    case: "breakBlock";
  } | {
    /**
     * @generated from field: soulfire.v1.PathfindGoal.PlaceBlockGoal place_block = 7;
     */
    value: PathfindGoal_PlaceBlockGoal;
    case: "placeBlock";
  } | {
    /**
     * @generated from field: soulfire.v1.PathfindGoal.AwayFromPositionGoal away_from_position = 8;
     */
    value: PathfindGoal_AwayFromPositionGoal;
    case: "awayFromPosition";
  } | {
    /**
     * @generated from field: soulfire.v1.PathfindGoal.AwayFromEntityGoal away_from_entity = 9;
     */
    value: PathfindGoal_AwayFromEntityGoal;
    case: "awayFromEntity";
  } | {
    /**
     * @generated from field: soulfire.v1.PathfindGoal.AnyGoal any = 10;
     */
    value: PathfindGoal_AnyGoal;
    case: "any";
  } | { case: undefined; value?: undefined };
};

/**
 * Describes the message soulfire.v1.PathfindGoal.
 * Use `create(PathfindGoalSchema)` to create a new message.
 */
export const PathfindGoalSchema: GenMessage<PathfindGoal> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 81);

/**
 * Reach a specific block within `radius` blocks (euclidean).
 *
 * @generated from message soulfire.v1.PathfindGoal.BlockGoal
 */
export type PathfindGoal_BlockGoal = Message<"soulfire.v1.PathfindGoal.BlockGoal"> & {
  /**
   * @generated from field: soulfire.v1.BlockPosition position = 1;
   */
  position?: BlockPosition | undefined;

  /**
   * Acceptable distance from `position` at which to consider the goal
   * reached. 0 means "stand on the block".
   *
   * @generated from field: float radius = 2;
   */
  radius: number;
};

/**
 * Describes the message soulfire.v1.PathfindGoal.BlockGoal.
 * Use `create(PathfindGoal_BlockGoalSchema)` to create a new message.
 */
export const PathfindGoal_BlockGoalSchema: GenMessage<PathfindGoal_BlockGoal> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 81, 0);

/**
 * Reach a world position within `radius` blocks.
 *
 * @generated from message soulfire.v1.PathfindGoal.NearGoal
 */
export type PathfindGoal_NearGoal = Message<"soulfire.v1.PathfindGoal.NearGoal"> & {
  /**
   * @generated from field: soulfire.v1.WorldPosition position = 1;
   */
  position?: WorldPosition | undefined;

  /**
   * @generated from field: float radius = 2;
   */
  radius: number;
};

/**
 * Describes the message soulfire.v1.PathfindGoal.NearGoal.
 * Use `create(PathfindGoal_NearGoalSchema)` to create a new message.
 */
export const PathfindGoal_NearGoalSchema: GenMessage<PathfindGoal_NearGoal> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 81, 1);

/**
 * Reach the current location of an entity, within `radius` blocks.
 * The path will be updated as the entity moves (follow behavior).
 *
 * @generated from message soulfire.v1.PathfindGoal.EntityGoal
 */
export type PathfindGoal_EntityGoal = Message<"soulfire.v1.PathfindGoal.EntityGoal"> & {
  /**
   * @generated from field: int32 entity_id = 1;
   */
  entityId: number;

  /**
   * @generated from field: float radius = 2;
   */
  radius: number;

  /**
   * @generated from field: optional string connection_epoch = 3;
   */
  connectionEpoch?: string | undefined;
};

/**
 * Describes the message soulfire.v1.PathfindGoal.EntityGoal.
 * Use `create(PathfindGoal_EntityGoalSchema)` to create a new message.
 */
export const PathfindGoal_EntityGoalSchema: GenMessage<PathfindGoal_EntityGoal> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 81, 2);

/**
 * Reach an XZ column, ignoring Y.
 *
 * @generated from message soulfire.v1.PathfindGoal.XZGoal
 */
export type PathfindGoal_XZGoal = Message<"soulfire.v1.PathfindGoal.XZGoal"> & {
  /**
   * @generated from field: double x = 1;
   */
  x: number;

  /**
   * @generated from field: double z = 2;
   */
  z: number;

  /**
   * @generated from field: string dimension = 3;
   */
  dimension: string;

  /**
   * @generated from field: float radius = 4;
   */
  radius: number;
};

/**
 * Describes the message soulfire.v1.PathfindGoal.XZGoal.
 * Use `create(PathfindGoal_XZGoalSchema)` to create a new message.
 */
export const PathfindGoal_XZGoalSchema: GenMessage<PathfindGoal_XZGoal> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 81, 3);

/**
 * Reach a Y level while allowing the planner to choose X and Z.
 *
 * @generated from message soulfire.v1.PathfindGoal.YGoal
 */
export type PathfindGoal_YGoal = Message<"soulfire.v1.PathfindGoal.YGoal"> & {
  /**
   * @generated from field: int32 y = 1;
   */
  y: number;

  /**
   * @generated from field: string dimension = 2;
   */
  dimension: string;
};

/**
 * Describes the message soulfire.v1.PathfindGoal.YGoal.
 * Use `create(PathfindGoal_YGoalSchema)` to create a new message.
 */
export const PathfindGoal_YGoalSchema: GenMessage<PathfindGoal_YGoal> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 81, 4);

/**
 * Reach and break one exact block.
 *
 * @generated from message soulfire.v1.PathfindGoal.BreakBlockGoal
 */
export type PathfindGoal_BreakBlockGoal = Message<"soulfire.v1.PathfindGoal.BreakBlockGoal"> & {
  /**
   * @generated from field: soulfire.v1.BlockPosition position = 1;
   */
  position?: BlockPosition | undefined;
};

/**
 * Describes the message soulfire.v1.PathfindGoal.BreakBlockGoal.
 * Use `create(PathfindGoal_BreakBlockGoalSchema)` to create a new message.
 */
export const PathfindGoal_BreakBlockGoalSchema: GenMessage<PathfindGoal_BreakBlockGoal> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 81, 5);

/**
 * Reach and place the currently selected placeable item at one exact block.
 *
 * @generated from message soulfire.v1.PathfindGoal.PlaceBlockGoal
 */
export type PathfindGoal_PlaceBlockGoal = Message<"soulfire.v1.PathfindGoal.PlaceBlockGoal"> & {
  /**
   * @generated from field: soulfire.v1.BlockPosition position = 1;
   */
  position?: BlockPosition | undefined;
};

/**
 * Describes the message soulfire.v1.PathfindGoal.PlaceBlockGoal.
 * Use `create(PathfindGoal_PlaceBlockGoalSchema)` to create a new message.
 */
export const PathfindGoal_PlaceBlockGoalSchema: GenMessage<PathfindGoal_PlaceBlockGoal> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 81, 6);

/**
 * Move until the bot is at least `radius` blocks away from a position.
 *
 * @generated from message soulfire.v1.PathfindGoal.AwayFromPositionGoal
 */
export type PathfindGoal_AwayFromPositionGoal = Message<"soulfire.v1.PathfindGoal.AwayFromPositionGoal"> & {
  /**
   * @generated from field: soulfire.v1.WorldPosition position = 1;
   */
  position?: WorldPosition | undefined;

  /**
   * @generated from field: float radius = 2;
   */
  radius: number;
};

/**
 * Describes the message soulfire.v1.PathfindGoal.AwayFromPositionGoal.
 * Use `create(PathfindGoal_AwayFromPositionGoalSchema)` to create a new message.
 */
export const PathfindGoal_AwayFromPositionGoalSchema: GenMessage<PathfindGoal_AwayFromPositionGoal> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 81, 7);

/**
 * Move until the bot is at least `radius` blocks away from an entity.
 *
 * @generated from message soulfire.v1.PathfindGoal.AwayFromEntityGoal
 */
export type PathfindGoal_AwayFromEntityGoal = Message<"soulfire.v1.PathfindGoal.AwayFromEntityGoal"> & {
  /**
   * @generated from field: int32 entity_id = 1;
   */
  entityId: number;

  /**
   * @generated from field: float radius = 2;
   */
  radius: number;

  /**
   * @generated from field: optional string connection_epoch = 3;
   */
  connectionEpoch?: string | undefined;
};

/**
 * Describes the message soulfire.v1.PathfindGoal.AwayFromEntityGoal.
 * Use `create(PathfindGoal_AwayFromEntityGoalSchema)` to create a new message.
 */
export const PathfindGoal_AwayFromEntityGoalSchema: GenMessage<PathfindGoal_AwayFromEntityGoal> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 81, 8);

/**
 * Complete when any nested goal is reached.
 *
 * @generated from message soulfire.v1.PathfindGoal.AnyGoal
 */
export type PathfindGoal_AnyGoal = Message<"soulfire.v1.PathfindGoal.AnyGoal"> & {
  /**
   * @generated from field: repeated soulfire.v1.PathfindGoal goals = 1;
   */
  goals: PathfindGoal[];
};

/**
 * Describes the message soulfire.v1.PathfindGoal.AnyGoal.
 * Use `create(PathfindGoal_AnyGoalSchema)` to create a new message.
 */
export const PathfindGoal_AnyGoalSchema: GenMessage<PathfindGoal_AnyGoal> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 81, 9);

/**
 * @generated from message soulfire.v1.PathfindOptions
 */
export type PathfindOptions = Message<"soulfire.v1.PathfindOptions"> & {
  /**
   * If true, the bot may break blocks along the path when necessary.
   *
   * @generated from field: bool allow_mining = 1;
   */
  allowMining: boolean;

  /**
   * If true, the bot may place blocks (e.g. bridge, pillar) when necessary.
   *
   * @generated from field: bool allow_placing = 2;
   */
  allowPlacing: boolean;

  /**
   * Maximum wall-clock seconds for planning + traversal. 0 means server default.
   *
   * @generated from field: int32 timeout_seconds = 3;
   */
  timeoutSeconds: number;

  /**
   * Overrides the server's path search timeout. 0 means server default.
   *
   * @generated from field: uint32 search_timeout_seconds = 4;
   */
  searchTimeoutSeconds: number;

  /**
   * Extra planner cost for breaking a block. Unset uses server settings.
   *
   * @generated from field: optional double break_block_penalty = 5;
   */
  breakBlockPenalty?: number | undefined;

  /**
   * Extra planner cost for placing a block. Unset uses server settings.
   *
   * @generated from field: optional double place_block_penalty = 6;
   */
  placeBlockPenalty?: number | undefined;

  /**
   * If true, candidate movements whose feet or head would enter fluid are
   * excluded from the route.
   *
   * @generated from field: bool avoid_fluids = 7;
   */
  avoidFluids: boolean;

  /**
   * Additional block item ids that pathfinding may place after exhausting its
   * built-in disposable building blocks. This is request-scoped and should be
   * used sparingly for recovery paths that would otherwise leave a bot
   * stranded.
   *
   * @generated from field: repeated string additional_place_item_ids = 8;
   */
  additionalPlaceItemIds: string[];

  /**
   * Whether ordinary forward path traversal should sprint. Unset preserves the
   * server default of sprinting. Set false for hunger-efficient travel.
   *
   * @generated from field: optional bool sprint = 9;
   */
  sprint?: boolean | undefined;

  /**
   * Optional inclusive elevation bounds for the bot's feet along the route.
   * These keep a route on the surface or within a mining layer without
   * constraining blocks that actions may reach from the route.
   *
   * @generated from field: optional int32 minimum_y = 10;
   */
  minimumY?: number | undefined;

  /**
   * @generated from field: optional int32 maximum_y = 11;
   */
  maximumY?: number | undefined;
};

/**
 * Describes the message soulfire.v1.PathfindOptions.
 * Use `create(PathfindOptionsSchema)` to create a new message.
 */
export const PathfindOptionsSchema: GenMessage<PathfindOptions> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 82);

/**
 * @generated from message soulfire.v1.GoToRequest
 */
export type GoToRequest = Message<"soulfire.v1.GoToRequest"> & {
  /**
   * @generated from field: string instance_id = 1;
   */
  instanceId: string;

  /**
   * @generated from field: string bot_id = 2;
   */
  botId: string;

  /**
   * @generated from field: soulfire.v1.PathfindGoal goal = 3;
   */
  goal?: PathfindGoal | undefined;

  /**
   * @generated from field: soulfire.v1.PathfindOptions options = 4;
   */
  options?: PathfindOptions | undefined;
};

/**
 * Describes the message soulfire.v1.GoToRequest.
 * Use `create(GoToRequestSchema)` to create a new message.
 */
export const GoToRequestSchema: GenMessage<GoToRequest> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 83);

/**
 * @generated from message soulfire.v1.PathfindProgress
 */
export type PathfindProgress = Message<"soulfire.v1.PathfindProgress"> & {
  /**
   * @generated from field: soulfire.v1.PathfindStatus status = 1;
   */
  status: PathfindStatus;

  /**
   * Remaining straight-line distance to the goal in blocks, if known.
   *
   * @generated from field: optional float distance_remaining = 2;
   */
  distanceRemaining?: number | undefined;

  /**
   * Current bot position, populated on MOVING updates.
   *
   * @generated from field: optional soulfire.v1.WorldPosition position = 3;
   */
  position?: WorldPosition | undefined;

  /**
   * Present when status is FAILED. Human-readable failure reason.
   *
   * @generated from field: optional string error = 4;
   */
  error?: string | undefined;

  /**
   * @generated from field: string action_id = 5;
   */
  actionId: string;
};

/**
 * Describes the message soulfire.v1.PathfindProgress.
 * Use `create(PathfindProgressSchema)` to create a new message.
 */
export const PathfindProgressSchema: GenMessage<PathfindProgress> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 84);

/**
 * @generated from message soulfire.v1.StopPathfindingRequest
 */
export type StopPathfindingRequest = Message<"soulfire.v1.StopPathfindingRequest"> & {
  /**
   * @generated from field: string instance_id = 1;
   */
  instanceId: string;

  /**
   * @generated from field: string bot_id = 2;
   */
  botId: string;
};

/**
 * Describes the message soulfire.v1.StopPathfindingRequest.
 * Use `create(StopPathfindingRequestSchema)` to create a new message.
 */
export const StopPathfindingRequestSchema: GenMessage<StopPathfindingRequest> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 85);

/**
 * @generated from message soulfire.v1.StopPathfindingResponse
 */
export type StopPathfindingResponse = Message<"soulfire.v1.StopPathfindingResponse"> & {
};

/**
 * Describes the message soulfire.v1.StopPathfindingResponse.
 * Use `create(StopPathfindingResponseSchema)` to create a new message.
 */
export const StopPathfindingResponseSchema: GenMessage<StopPathfindingResponse> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 86);

/**
 * Exclusive control lease for coordinating multiple SDK clients, scripts, and
 * independent SDK controllers and server tasks against the same bot.
 *
 * @generated from message soulfire.v1.AcquireBotControlRequest
 */
export type AcquireBotControlRequest = Message<"soulfire.v1.AcquireBotControlRequest"> & {
  /**
   * @generated from field: string instance_id = 1;
   */
  instanceId: string;

  /**
   * @generated from field: string bot_id = 2;
   */
  botId: string;

  /**
   * Requested lease lifetime. The server clamps this to its configured range.
   *
   * @generated from field: uint32 ttl_seconds = 3;
   */
  ttlSeconds: number;
};

/**
 * Describes the message soulfire.v1.AcquireBotControlRequest.
 * Use `create(AcquireBotControlRequestSchema)` to create a new message.
 */
export const AcquireBotControlRequestSchema: GenMessage<AcquireBotControlRequest> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 87);

/**
 * @generated from message soulfire.v1.BotControlLease
 */
export type BotControlLease = Message<"soulfire.v1.BotControlLease"> & {
  /**
   * @generated from field: string token = 1;
   */
  token: string;

  /**
   * @generated from field: google.protobuf.Timestamp expires_at = 2;
   */
  expiresAt?: Timestamp | undefined;
};

/**
 * Describes the message soulfire.v1.BotControlLease.
 * Use `create(BotControlLeaseSchema)` to create a new message.
 */
export const BotControlLeaseSchema: GenMessage<BotControlLease> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 88);

/**
 * @generated from message soulfire.v1.AcquireBotControlResponse
 */
export type AcquireBotControlResponse = Message<"soulfire.v1.AcquireBotControlResponse"> & {
  /**
   * @generated from field: soulfire.v1.BotControlLease lease = 1;
   */
  lease?: BotControlLease | undefined;
};

/**
 * Describes the message soulfire.v1.AcquireBotControlResponse.
 * Use `create(AcquireBotControlResponseSchema)` to create a new message.
 */
export const AcquireBotControlResponseSchema: GenMessage<AcquireBotControlResponse> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 89);

/**
 * @generated from message soulfire.v1.RenewBotControlRequest
 */
export type RenewBotControlRequest = Message<"soulfire.v1.RenewBotControlRequest"> & {
  /**
   * @generated from field: string instance_id = 1;
   */
  instanceId: string;

  /**
   * @generated from field: string bot_id = 2;
   */
  botId: string;

  /**
   * @generated from field: string token = 3;
   */
  token: string;

  /**
   * @generated from field: uint32 ttl_seconds = 4;
   */
  ttlSeconds: number;
};

/**
 * Describes the message soulfire.v1.RenewBotControlRequest.
 * Use `create(RenewBotControlRequestSchema)` to create a new message.
 */
export const RenewBotControlRequestSchema: GenMessage<RenewBotControlRequest> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 90);

/**
 * @generated from message soulfire.v1.RenewBotControlResponse
 */
export type RenewBotControlResponse = Message<"soulfire.v1.RenewBotControlResponse"> & {
  /**
   * @generated from field: soulfire.v1.BotControlLease lease = 1;
   */
  lease?: BotControlLease | undefined;
};

/**
 * Describes the message soulfire.v1.RenewBotControlResponse.
 * Use `create(RenewBotControlResponseSchema)` to create a new message.
 */
export const RenewBotControlResponseSchema: GenMessage<RenewBotControlResponse> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 91);

/**
 * @generated from message soulfire.v1.ReleaseBotControlRequest
 */
export type ReleaseBotControlRequest = Message<"soulfire.v1.ReleaseBotControlRequest"> & {
  /**
   * @generated from field: string instance_id = 1;
   */
  instanceId: string;

  /**
   * @generated from field: string bot_id = 2;
   */
  botId: string;

  /**
   * @generated from field: string token = 3;
   */
  token: string;
};

/**
 * Describes the message soulfire.v1.ReleaseBotControlRequest.
 * Use `create(ReleaseBotControlRequestSchema)` to create a new message.
 */
export const ReleaseBotControlRequestSchema: GenMessage<ReleaseBotControlRequest> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 92);

/**
 * @generated from message soulfire.v1.ReleaseBotControlResponse
 */
export type ReleaseBotControlResponse = Message<"soulfire.v1.ReleaseBotControlResponse"> & {
};

/**
 * Describes the message soulfire.v1.ReleaseBotControlResponse.
 * Use `create(ReleaseBotControlResponseSchema)` to create a new message.
 */
export const ReleaseBotControlResponseSchema: GenMessage<ReleaseBotControlResponse> = /*@__PURE__*/
  messageDesc(file_soulfire_bot_live, 93);

/**
 * The face of a block that an action targets. Used when placing a block or
 * right-clicking a block with an item to indicate which side the player is
 * interacting with.
 *
 * @generated from enum soulfire.v1.BlockFace
 */
export enum BlockFace {
  /**
   * @generated from enum value: BLOCK_FACE_UNSPECIFIED = 0;
   */
  UNSPECIFIED = 0,

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

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

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

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

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

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

/**
 * Describes the enum soulfire.v1.BlockFace.
 */
export const BlockFaceSchema: GenEnum<BlockFace> = /*@__PURE__*/
  enumDesc(file_soulfire_bot_live, 0);

/**
 * Which hand to use for an action. Mirrors Minecraft's main-hand / off-hand
 * distinction.
 *
 * @generated from enum soulfire.v1.Hand
 */
export enum Hand {
  /**
   * @generated from enum value: HAND_UNSPECIFIED = 0;
   */
  UNSPECIFIED = 0,

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

  /**
   * @generated from enum value: HAND_OFF = 2;
   */
  OFF = 2,
}

/**
 * Describes the enum soulfire.v1.Hand.
 */
export const HandSchema: GenEnum<Hand> = /*@__PURE__*/
  enumDesc(file_soulfire_bot_live, 1);

/**
 * Source of a chat message.
 *
 * @generated from enum soulfire.v1.ChatSource
 */
export enum ChatSource {
  /**
   * @generated from enum value: CHAT_SOURCE_UNSPECIFIED = 0;
   */
  UNSPECIFIED = 0,

  /**
   * Sent by another player (player chat).
   *
   * @generated from enum value: CHAT_SOURCE_PLAYER = 1;
   */
  PLAYER = 1,

  /**
   * Server-wide broadcast or system announcement.
   *
   * @generated from enum value: CHAT_SOURCE_SYSTEM = 2;
   */
  SYSTEM = 2,

  /**
   * Action bar overlay (the thin strip above the hotbar).
   *
   * @generated from enum value: CHAT_SOURCE_ACTION_BAR = 3;
   */
  ACTION_BAR = 3,

  /**
   * Whisper directed at this bot.
   *
   * @generated from enum value: CHAT_SOURCE_WHISPER = 4;
   */
  WHISPER = 4,

  /**
   * The client received a message but Minecraft did not expose reliable
   * source metadata for it.
   *
   * @generated from enum value: CHAT_SOURCE_UNKNOWN = 5;
   */
  UNKNOWN = 5,
}

/**
 * Describes the enum soulfire.v1.ChatSource.
 */
export const ChatSourceSchema: GenEnum<ChatSource> = /*@__PURE__*/
  enumDesc(file_soulfire_bot_live, 2);

/**
 * Lifecycle event kind for the bot's Minecraft session.
 *
 * @generated from enum soulfire.v1.BotLifecycleKind
 */
export enum BotLifecycleKind {
  /**
   * @generated from enum value: BOT_LIFECYCLE_UNSPECIFIED = 0;
   */
  BOT_LIFECYCLE_UNSPECIFIED = 0,

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

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

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

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

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

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

/**
 * Describes the enum soulfire.v1.BotLifecycleKind.
 */
export const BotLifecycleKindSchema: GenEnum<BotLifecycleKind> = /*@__PURE__*/
  enumDesc(file_soulfire_bot_live, 3);

/**
 * Entity event kind.
 *
 * @generated from enum soulfire.v1.EntityEventKind
 */
export enum EntityEventKind {
  /**
   * @generated from enum value: ENTITY_EVENT_UNSPECIFIED = 0;
   */
  ENTITY_EVENT_UNSPECIFIED = 0,

  /**
   * Entity entered the bot's observation radius.
   *
   * @generated from enum value: ENTITY_EVENT_SPAWN = 1;
   */
  ENTITY_EVENT_SPAWN = 1,

  /**
   * Entity metadata or position updated.
   *
   * @generated from enum value: ENTITY_EVENT_UPDATE = 2;
   */
  ENTITY_EVENT_UPDATE = 2,

  /**
   * Entity left the observation radius or was removed.
   *
   * @generated from enum value: ENTITY_EVENT_DESPAWN = 3;
   */
  ENTITY_EVENT_DESPAWN = 3,
}

/**
 * Describes the enum soulfire.v1.EntityEventKind.
 */
export const EntityEventKindSchema: GenEnum<EntityEventKind> = /*@__PURE__*/
  enumDesc(file_soulfire_bot_live, 4);

/**
 * @generated from enum soulfire.v1.WeatherEventKind
 */
export enum WeatherEventKind {
  /**
   * @generated from enum value: WEATHER_EVENT_UNSPECIFIED = 0;
   */
  WEATHER_EVENT_UNSPECIFIED = 0,

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

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

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

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

/**
 * Describes the enum soulfire.v1.WeatherEventKind.
 */
export const WeatherEventKindSchema: GenEnum<WeatherEventKind> = /*@__PURE__*/
  enumDesc(file_soulfire_bot_live, 5);

/**
 * @generated from enum soulfire.v1.PlayerListEventKind
 */
export enum PlayerListEventKind {
  /**
   * @generated from enum value: PLAYER_LIST_EVENT_UNSPECIFIED = 0;
   */
  PLAYER_LIST_EVENT_UNSPECIFIED = 0,

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

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

/**
 * Describes the enum soulfire.v1.PlayerListEventKind.
 */
export const PlayerListEventKindSchema: GenEnum<PlayerListEventKind> = /*@__PURE__*/
  enumDesc(file_soulfire_bot_live, 6);

/**
 * @generated from enum soulfire.v1.BossBarEventKind
 */
export enum BossBarEventKind {
  /**
   * @generated from enum value: BOSS_BAR_EVENT_UNSPECIFIED = 0;
   */
  BOSS_BAR_EVENT_UNSPECIFIED = 0,

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

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

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

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

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

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

/**
 * Describes the enum soulfire.v1.BossBarEventKind.
 */
export const BossBarEventKindSchema: GenEnum<BossBarEventKind> = /*@__PURE__*/
  enumDesc(file_soulfire_bot_live, 7);

/**
 * @generated from enum soulfire.v1.SoundEventKind
 */
export enum SoundEventKind {
  /**
   * @generated from enum value: SOUND_EVENT_UNSPECIFIED = 0;
   */
  SOUND_EVENT_UNSPECIFIED = 0,

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

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

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

/**
 * Describes the enum soulfire.v1.SoundEventKind.
 */
export const SoundEventKindSchema: GenEnum<SoundEventKind> = /*@__PURE__*/
  enumDesc(file_soulfire_bot_live, 8);

/**
 * @generated from enum soulfire.v1.ScoreboardEventKind
 */
export enum ScoreboardEventKind {
  /**
   * @generated from enum value: SCOREBOARD_EVENT_UNSPECIFIED = 0;
   */
  SCOREBOARD_EVENT_UNSPECIFIED = 0,

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

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

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

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

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

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

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

  /**
   * @generated from enum value: SCOREBOARD_EVENT_TEAM_REMOVE = 8;
   */
  SCOREBOARD_EVENT_TEAM_REMOVE = 8,

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

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

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

/**
 * Describes the enum soulfire.v1.ScoreboardEventKind.
 */
export const ScoreboardEventKindSchema: GenEnum<ScoreboardEventKind> = /*@__PURE__*/
  enumDesc(file_soulfire_bot_live, 9);

/**
 * @generated from enum soulfire.v1.ResourcePackEventKind
 */
export enum ResourcePackEventKind {
  /**
   * @generated from enum value: RESOURCE_PACK_EVENT_UNSPECIFIED = 0;
   */
  RESOURCE_PACK_EVENT_UNSPECIFIED = 0,

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

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

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

/**
 * Describes the enum soulfire.v1.ResourcePackEventKind.
 */
export const ResourcePackEventKindSchema: GenEnum<ResourcePackEventKind> = /*@__PURE__*/
  enumDesc(file_soulfire_bot_live, 10);

/**
 * @generated from enum soulfire.v1.TitleEventKind
 */
export enum TitleEventKind {
  /**
   * @generated from enum value: TITLE_EVENT_UNSPECIFIED = 0;
   */
  TITLE_EVENT_UNSPECIFIED = 0,

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

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

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

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

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

/**
 * Describes the enum soulfire.v1.TitleEventKind.
 */
export const TitleEventKindSchema: GenEnum<TitleEventKind> = /*@__PURE__*/
  enumDesc(file_soulfire_bot_live, 11);

/**
 * @generated from enum soulfire.v1.ChunkEventKind
 */
export enum ChunkEventKind {
  /**
   * @generated from enum value: CHUNK_EVENT_UNSPECIFIED = 0;
   */
  CHUNK_EVENT_UNSPECIFIED = 0,

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

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

/**
 * Describes the enum soulfire.v1.ChunkEventKind.
 */
export const ChunkEventKindSchema: GenEnum<ChunkEventKind> = /*@__PURE__*/
  enumDesc(file_soulfire_bot_live, 12);

/**
 * Final outcome of an imperative bot action.
 *
 * @generated from enum soulfire.v1.BotActionStatus
 */
export enum BotActionStatus {
  /**
   * @generated from enum value: BOT_ACTION_STATUS_UNSPECIFIED = 0;
   */
  UNSPECIFIED = 0,

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

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

  /**
   * @generated from enum value: BOT_ACTION_STATUS_FAILED = 3;
   */
  FAILED = 3,
}

/**
 * Describes the enum soulfire.v1.BotActionStatus.
 */
export const BotActionStatusSchema: GenEnum<BotActionStatus> = /*@__PURE__*/
  enumDesc(file_soulfire_bot_live, 13);

/**
 * @generated from enum soulfire.v1.ResourcePackResponse
 */
export enum ResourcePackResponse {
  /**
   * @generated from enum value: RESOURCE_PACK_RESPONSE_UNSPECIFIED = 0;
   */
  UNSPECIFIED = 0,

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

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

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

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

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

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

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

  /**
   * @generated from enum value: RESOURCE_PACK_RESPONSE_DISCARDED = 8;
   */
  DISCARDED = 8,
}

/**
 * Describes the enum soulfire.v1.ResourcePackResponse.
 */
export const ResourcePackResponseSchema: GenEnum<ResourcePackResponse> = /*@__PURE__*/
  enumDesc(file_soulfire_bot_live, 14);

/**
 * Status of a pathfinding attempt.
 *
 * @generated from enum soulfire.v1.PathfindStatus
 */
export enum PathfindStatus {
  /**
   * @generated from enum value: PATHFIND_STATUS_UNSPECIFIED = 0;
   */
  UNSPECIFIED = 0,

  /**
   * Planning has started; no path yet.
   *
   * @generated from enum value: PATHFIND_STATUS_PLANNING = 1;
   */
  PLANNING = 1,

  /**
   * A path was found and traversal has started.
   *
   * @generated from enum value: PATHFIND_STATUS_MOVING = 2;
   */
  MOVING = 2,

  /**
   * The goal was reached.
   *
   * @generated from enum value: PATHFIND_STATUS_COMPLETED = 3;
   */
  COMPLETED = 3,

  /**
   * No path could be found (unreachable) or a timeout / obstacle aborted
   * traversal. See `error` for detail.
   *
   * @generated from enum value: PATHFIND_STATUS_FAILED = 4;
   */
  FAILED = 4,

  /**
   * Aborted by the client via StopPathfinding.
   *
   * @generated from enum value: PATHFIND_STATUS_CANCELLED = 5;
   */
  CANCELLED = 5,
}

/**
 * Describes the enum soulfire.v1.PathfindStatus.
 */
export const PathfindStatusSchema: GenEnum<PathfindStatus> = /*@__PURE__*/
  enumDesc(file_soulfire_bot_live, 15);

/**
 * Live bot remote-control service. See file header for scope and design notes.
 *
 * Permissions:
 * - READ_BOT_INFO: required for WatchBotEvents, GetBlock, FindBlocks,
 *                  ListNearbyEntities.
 * - CONTROL_BOT_ACTIONS: required for chat, interactions, pathfinding, and
 *                        exclusive control leases.
 *
 * Error handling mirrors BotService:
 * - NOT_FOUND: instance or bot does not exist.
 * - FAILED_PRECONDITION: bot is not online, target not loaded, or the
 *                        requested action is not currently valid.
 * - OUT_OF_RANGE: target is outside the bot's reach / observation radius.
 * - INTERNAL: unexpected server errors.
 *
 * @generated from service soulfire.v1.BotLiveService
 */
export const BotLiveService: GenService<{
  /**
   * Subscribes to a single multiplexed event stream for one bot. The first
   * message is always the current BotStatus. The stream remains open while the
   * bot is stopped and follows the configured bot across reconnects. Live
   * snapshots and filtered events begin whenever a connection becomes ready.
   *
   * @generated from rpc soulfire.v1.BotLiveService.WatchBotEvents
   */
  watchBotEvents: {
    methodKind: "server_streaming";
    input: typeof WatchBotEventsRequestSchema;
    output: typeof BotEventSchema;
  },
  /**
   * Sends a chat message (or slash command) from the bot to the connected
   * Minecraft server. Messages prefixed with "/" are routed as commands.
   *
   * @generated from rpc soulfire.v1.BotLiveService.SendChat
   */
  sendChat: {
    methodKind: "unary";
    input: typeof SendChatRequestSchema;
    output: typeof SendChatResponseSchema;
  },
  /**
   * Returns the block at a world position, if the chunk is loaded.
   *
   * @generated from rpc soulfire.v1.BotLiveService.GetBlock
   */
  getBlock: {
    methodKind: "unary";
    input: typeof GetBlockRequestSchema;
    output: typeof GetBlockResponseSchema;
  },
  /**
   * Finds blocks of the given ids within a radius of the bot. Results are
   * sorted by ascending distance.
   *
   * @generated from rpc soulfire.v1.BotLiveService.FindBlocks
   */
  findBlocks: {
    methodKind: "unary";
    input: typeof FindBlocksRequestSchema;
    output: typeof FindBlocksResponseSchema;
  },
  /**
   * Lists entities within a radius of the bot, optionally filtered by type.
   *
   * @generated from rpc soulfire.v1.BotLiveService.ListNearbyEntities
   */
  listNearbyEntities: {
    methodKind: "unary";
    input: typeof ListNearbyEntitiesRequestSchema;
    output: typeof ListNearbyEntitiesResponseSchema;
  },
  /**
   * Starts (or stops, when `cancel` is set) breaking a block at a specific
   * position. Unlike MouseClick, the target is explicit, with no raytrace from
   * the current look direction is performed.
   *
   * @generated from rpc soulfire.v1.BotLiveService.DigBlock
   */
  digBlock: {
    methodKind: "unary";
    input: typeof DigBlockRequestSchema;
    output: typeof DigBlockResponseSchema;
  },
  /**
   * Places the currently held item as a block, against a specific face of a
   * specific block.
   *
   * @generated from rpc soulfire.v1.BotLiveService.PlaceBlock
   */
  placeBlock: {
    methodKind: "unary";
    input: typeof PlaceBlockRequestSchema;
    output: typeof PlaceBlockResponseSchema;
  },
  /**
   * Activates a specific block face without assigning placement semantics to
   * the operation. This covers doors, buttons, beds, redstone controls, and
   * modded interactive blocks.
   *
   * @generated from rpc soulfire.v1.BotLiveService.InteractBlock
   */
  interactBlock: {
    methodKind: "unary";
    input: typeof InteractBlockRequestSchema;
    output: typeof InteractBlockResponseSchema;
  },
  /**
   * Uses the item in the specified hand (eat, drink, throw, draw bow, etc.).
   *
   * @generated from rpc soulfire.v1.BotLiveService.UseItem
   */
  useItem: {
    methodKind: "unary";
    input: typeof UseItemRequestSchema;
    output: typeof UseItemResponseSchema;
  },
  /**
   * Releases an item that is currently being used, such as firing a drawn bow
   * or stopping eating.
   *
   * @generated from rpc soulfire.v1.BotLiveService.ReleaseItem
   */
  releaseItem: {
    methodKind: "unary";
    input: typeof ReleaseItemRequestSchema;
    output: typeof ReleaseItemResponseSchema;
  },
  /**
   * Attacks a specific entity by network id.
   *
   * @generated from rpc soulfire.v1.BotLiveService.AttackEntity
   */
  attackEntity: {
    methodKind: "unary";
    input: typeof AttackEntityRequestSchema;
    output: typeof AttackEntityResponseSchema;
  },
  /**
   * Right-clicks / interacts with a specific entity by network id. Used for
   * trading with villagers, mounting mobs, etc.
   *
   * @generated from rpc soulfire.v1.BotLiveService.InteractEntity
   */
  interactEntity: {
    methodKind: "unary";
    input: typeof InteractEntityRequestSchema;
    output: typeof InteractEntityResponseSchema;
  },
  /**
   * Swings the specified arm without a target (visual animation only).
   *
   * @generated from rpc soulfire.v1.BotLiveService.SwingArm
   */
  swingArm: {
    methodKind: "unary";
    input: typeof SwingArmRequestSchema;
    output: typeof SwingArmResponseSchema;
  },
  /**
   * Respawns a dead bot.
   *
   * @generated from rpc soulfire.v1.BotLiveService.Respawn
   */
  respawn: {
    methodKind: "unary";
    input: typeof RespawnRequestSchema;
    output: typeof RespawnResponseSchema;
  },
  /**
   * Uses a reachable bed and completes only after the server confirms that the
   * bot entered the sleeping state.
   *
   * @generated from rpc soulfire.v1.BotLiveService.Sleep
   */
  sleep: {
    methodKind: "unary";
    input: typeof SleepRequestSchema;
    output: typeof SleepResponseSchema;
  },
  /**
   * Leaves the current bed.
   *
   * @generated from rpc soulfire.v1.BotLiveService.Wake
   */
  wake: {
    methodKind: "unary";
    input: typeof WakeRequestSchema;
    output: typeof WakeResponseSchema;
  },
  /**
   * @generated from rpc soulfire.v1.BotLiveService.MountEntity
   */
  mountEntity: {
    methodKind: "unary";
    input: typeof MountEntityRequestSchema;
    output: typeof MountEntityResponseSchema;
  },
  /**
   * @generated from rpc soulfire.v1.BotLiveService.Dismount
   */
  dismount: {
    methodKind: "unary";
    input: typeof DismountRequestSchema;
    output: typeof DismountResponseSchema;
  },
  /**
   * @generated from rpc soulfire.v1.BotLiveService.SetVehicleControl
   */
  setVehicleControl: {
    methodKind: "unary";
    input: typeof SetVehicleControlRequestSchema;
    output: typeof SetVehicleControlResponseSchema;
  },
  /**
   * @generated from rpc soulfire.v1.BotLiveService.UpdateSign
   */
  updateSign: {
    methodKind: "unary";
    input: typeof UpdateSignRequestSchema;
    output: typeof UpdateSignResponseSchema;
  },
  /**
   * @generated from rpc soulfire.v1.BotLiveService.WriteBook
   */
  writeBook: {
    methodKind: "unary";
    input: typeof WriteBookRequestSchema;
    output: typeof WriteBookResponseSchema;
  },
  /**
   * @generated from rpc soulfire.v1.BotLiveService.RespondResourcePack
   */
  respondResourcePack: {
    methodKind: "unary";
    input: typeof RespondResourcePackRequestSchema;
    output: typeof RespondResourcePackResponseSchema;
  },
  /**
   * @generated from rpc soulfire.v1.BotLiveService.SetFlying
   */
  setFlying: {
    methodKind: "unary";
    input: typeof SetFlyingRequestSchema;
    output: typeof SetFlyingResponseSchema;
  },
  /**
   * Requests survival-mode elytra flight. Minecraft validates that the bot is
   * falling and has usable elytra equipment.
   *
   * @generated from rpc soulfire.v1.BotLiveService.StartElytraFlight
   */
  startElytraFlight: {
    methodKind: "unary";
    input: typeof StartElytraFlightRequestSchema;
    output: typeof StartElytraFlightResponseSchema;
  },
  /**
   * @generated from rpc soulfire.v1.BotLiveService.SetCreativeSlot
   */
  setCreativeSlot: {
    methodKind: "unary";
    input: typeof SetCreativeSlotRequestSchema;
    output: typeof SetCreativeSlotResponseSchema;
  },
  /**
   * Waits until every chunk in a square radius around the bot is loaded.
   *
   * @generated from rpc soulfire.v1.BotLiveService.WaitForChunks
   */
  waitForChunks: {
    methodKind: "unary";
    input: typeof WaitForChunksRequestSchema;
    output: typeof WaitForChunksResponseSchema;
  },
  /**
   * Requests the bot to pathfind to a goal. Returns a stream of progress
   * events terminating with COMPLETED, FAILED, or CANCELLED. A new GoTo for
   * the same bot supersedes any in-progress pathfinding; the previous stream
   * is closed with CANCELLED.
   *
   * @generated from rpc soulfire.v1.BotLiveService.GoTo
   */
  goTo: {
    methodKind: "server_streaming";
    input: typeof GoToRequestSchema;
    output: typeof PathfindProgressSchema;
  },
  /**
   * Cancels any in-progress pathfinding session for this bot.
   *
   * @generated from rpc soulfire.v1.BotLiveService.StopPathfinding
   */
  stopPathfinding: {
    methodKind: "unary";
    input: typeof StopPathfindingRequestSchema;
    output: typeof StopPathfindingResponseSchema;
  },
  /**
   * Acquires exclusive action control for a bot. While the lease is active,
   * action calls must include its token in the X-SoulFire-Control-Token
   * request header.
   *
   * @generated from rpc soulfire.v1.BotLiveService.AcquireBotControl
   */
  acquireBotControl: {
    methodKind: "unary";
    input: typeof AcquireBotControlRequestSchema;
    output: typeof AcquireBotControlResponseSchema;
  },
  /**
   * @generated from rpc soulfire.v1.BotLiveService.RenewBotControl
   */
  renewBotControl: {
    methodKind: "unary";
    input: typeof RenewBotControlRequestSchema;
    output: typeof RenewBotControlResponseSchema;
  },
  /**
   * @generated from rpc soulfire.v1.BotLiveService.ReleaseBotControl
   */
  releaseBotControl: {
    methodKind: "unary";
    input: typeof ReleaseBotControlRequestSchema;
    output: typeof ReleaseBotControlResponseSchema;
  },
}> = /*@__PURE__*/
  serviceDesc(file_soulfire_bot_live, 0);
