// @generated by protoc-gen-es v2.13.0 with parameter "target=ts,import_extension=js"
// @generated from file soulfire/task.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_google_api_annotations } from "../google/api/annotations_pb.js";
import { file_google_api_field_behavior } from "../google/api/field_behavior_pb.js";
import type { Any, Timestamp } from "@bufbuild/protobuf/wkt";
import { file_google_protobuf_any, file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
import { file_soulfire_api_docs } from "./api_docs_pb.js";
import type { PathfindGoal, PathfindGoal_EntityGoal, PathfindOptions } from "./bot_live_pb.js";
import { file_soulfire_bot_live } from "./bot_live_pb.js";
import type { BlockPosition, WorldPosition } from "./common_pb.js";
import { file_soulfire_common } from "./common_pb.js";
import type { EntityReference } from "./domain_pb.js";
import { file_soulfire_domain } from "./domain_pb.js";
import type { ItemSelector } from "./inventory_pb.js";
import { file_soulfire_inventory } from "./inventory_pb.js";
import type { EntitySelector, IntRange } from "./world_pb.js";
import { file_soulfire_world } from "./world_pb.js";
import type { Message } from "@bufbuild/protobuf";

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

/**
 * @generated from message soulfire.v1.BotTaskProgress
 */
export type BotTaskProgress = Message<"soulfire.v1.BotTaskProgress"> & {
  /**
   * @generated from field: double fraction = 1;
   */
  fraction: number;

  /**
   * @generated from field: uint64 current = 2;
   */
  current: bigint;

  /**
   * @generated from field: optional uint64 total = 3;
   */
  total?: bigint | undefined;

  /**
   * @generated from field: string message = 4;
   */
  message: string;

  /**
   * @generated from field: google.protobuf.Any detail = 5;
   */
  detail?: Any | undefined;
};

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

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

  /**
   * @generated from field: string message = 2;
   */
  message: string;

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

  /**
   * @generated from field: google.protobuf.Any detail = 4;
   */
  detail?: Any | undefined;
};

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

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

  /**
   * @generated from field: string instance_id = 2;
   */
  instanceId: string;

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

  /**
   * @generated from field: string task_type = 4;
   */
  taskType: string;

  /**
   * @generated from field: string owner_id = 5;
   */
  ownerId: string;

  /**
   * @generated from field: string owner_name = 6;
   */
  ownerName: string;

  /**
   * @generated from field: soulfire.v1.BotTaskStatus status = 7;
   */
  status: BotTaskStatus;

  /**
   * @generated from field: soulfire.v1.BotTaskProgress progress = 8;
   */
  progress?: BotTaskProgress | undefined;

  /**
   * @generated from field: string summary = 9;
   */
  summary: string;

  /**
   * @generated from field: soulfire.v1.BotTaskFailure failure = 10;
   */
  failure?: BotTaskFailure | undefined;

  /**
   * @generated from field: google.protobuf.Timestamp created_at = 11;
   */
  createdAt?: Timestamp | undefined;

  /**
   * @generated from field: google.protobuf.Timestamp started_at = 12;
   */
  startedAt?: Timestamp | undefined;

  /**
   * @generated from field: google.protobuf.Timestamp updated_at = 13;
   */
  updatedAt?: Timestamp | undefined;

  /**
   * @generated from field: google.protobuf.Timestamp completed_at = 14;
   */
  completedAt?: Timestamp | undefined;

  /**
   * @generated from field: google.protobuf.Timestamp deadline = 15;
   */
  deadline?: Timestamp | undefined;

  /**
   * @generated from field: repeated soulfire.v1.BotTaskResource claimed_resources = 16;
   */
  claimedResources: BotTaskResource[];

  /**
   * @generated from field: optional string parent_task_id = 17;
   */
  parentTaskId?: string | undefined;

  /**
   * @generated from field: repeated string child_task_ids = 18;
   */
  childTaskIds: string[];

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

  /**
   * @generated from field: optional string idempotency_key = 20;
   */
  idempotencyKey?: string | undefined;

  /**
   * @generated from field: soulfire.v1.BotTaskReconnectPolicy reconnect_policy = 21;
   */
  reconnectPolicy: BotTaskReconnectPolicy;

  /**
   * @generated from field: soulfire.v1.BotTaskDisconnectPolicy disconnect_policy = 22;
   */
  disconnectPolicy: BotTaskDisconnectPolicy;

  /**
   * @generated from field: soulfire.v1.BotTaskConflictPolicy conflict_policy = 23;
   */
  conflictPolicy: BotTaskConflictPolicy;

  /**
   * @generated from field: soulfire.v1.BotTaskPriority priority = 24;
   */
  priority: BotTaskPriority;

  /**
   * @generated from field: google.protobuf.Any input = 25;
   */
  input?: Any | undefined;

  /**
   * @generated from field: google.protobuf.Any result = 26;
   */
  result?: Any | undefined;

  /**
   * @generated from field: uint64 revision = 27;
   */
  revision: bigint;
};

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

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

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

  /**
   * @generated from field: google.protobuf.Any input = 3;
   */
  input?: Any | undefined;

  /**
   * @generated from field: soulfire.v1.BotTaskConflictPolicy conflict_policy = 4;
   */
  conflictPolicy: BotTaskConflictPolicy;

  /**
   * @generated from field: soulfire.v1.BotTaskReconnectPolicy reconnect_policy = 5;
   */
  reconnectPolicy: BotTaskReconnectPolicy;

  /**
   * @generated from field: soulfire.v1.BotTaskDisconnectPolicy disconnect_policy = 6;
   */
  disconnectPolicy: BotTaskDisconnectPolicy;

  /**
   * @generated from field: soulfire.v1.BotTaskPriority priority = 7;
   */
  priority: BotTaskPriority;

  /**
   * @generated from field: google.protobuf.Timestamp deadline = 8;
   */
  deadline?: Timestamp | undefined;

  /**
   * @generated from field: optional string parent_task_id = 9;
   */
  parentTaskId?: string | undefined;

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

  /**
   * @generated from field: optional string idempotency_key = 11;
   */
  idempotencyKey?: string | undefined;
};

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

/**
 * @generated from message soulfire.v1.GetBotTaskRequest
 */
export type GetBotTaskRequest = Message<"soulfire.v1.GetBotTaskRequest"> & {
  /**
   * @generated from field: string task_id = 1;
   */
  taskId: string;
};

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

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

  /**
   * @generated from field: optional string bot_id = 2;
   */
  botId?: string | undefined;

  /**
   * @generated from field: repeated soulfire.v1.BotTaskStatus statuses = 3;
   */
  statuses: BotTaskStatus[];

  /**
   * @generated from field: uint32 page_size = 4;
   */
  pageSize: number;

  /**
   * @generated from field: string page_token = 5;
   */
  pageToken: string;

  /**
   * @generated from field: bool include_terminal = 6;
   */
  includeTerminal: boolean;
};

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

/**
 * @generated from message soulfire.v1.ListBotTasksResponse
 */
export type ListBotTasksResponse = Message<"soulfire.v1.ListBotTasksResponse"> & {
  /**
   * @generated from field: repeated soulfire.v1.BotTask tasks = 1;
   */
  tasks: BotTask[];

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

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

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

  /**
   * @generated from field: uint64 after_revision = 2;
   */
  afterRevision: bigint;

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

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

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

  /**
   * @generated from field: optional string bot_id = 2;
   */
  botId?: string | undefined;

  /**
   * @generated from field: repeated soulfire.v1.BotTaskStatus statuses = 3;
   */
  statuses: BotTaskStatus[];

  /**
   * @generated from field: uint64 after_sequence = 4;
   */
  afterSequence: bigint;

  /**
   * @generated from field: bool include_snapshot = 5;
   */
  includeSnapshot: boolean;
};

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

/**
 * @generated from message soulfire.v1.BotTaskEvent
 */
export type BotTaskEvent = Message<"soulfire.v1.BotTaskEvent"> & {
  /**
   * @generated from field: uint64 sequence = 1;
   */
  sequence: bigint;

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

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

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

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

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

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

/**
 * Core task input for persistent path execution.
 *
 * @generated from message soulfire.v1.GoToTask
 */
export type GoToTask = Message<"soulfire.v1.GoToTask"> & {
  /**
   * @generated from field: soulfire.v1.PathfindGoal goal = 1;
   */
  goal?: PathfindGoal | undefined;

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

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

/**
 * Core task result for persistent path execution.
 *
 * @generated from message soulfire.v1.GoToTaskResult
 */
export type GoToTaskResult = Message<"soulfire.v1.GoToTaskResult"> & {
  /**
   * @generated from field: soulfire.v1.WorldPosition final_position = 1;
   */
  finalPosition?: WorldPosition | undefined;
};

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

/**
 * Core task input for continuously following a live entity.
 *
 * @generated from message soulfire.v1.FollowEntityTask
 */
export type FollowEntityTask = Message<"soulfire.v1.FollowEntityTask"> & {
  /**
   * @generated from field: soulfire.v1.PathfindGoal.EntityGoal target = 1;
   */
  target?: PathfindGoal_EntityGoal | undefined;

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

  /**
   * How long the entity may remain unobservable before the task completes.
   * Zero selects the server default.
   *
   * @generated from field: uint32 target_unavailable_timeout_seconds = 3;
   */
  targetUnavailableTimeoutSeconds: number;
};

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

/**
 * @generated from message soulfire.v1.FollowEntityTaskResult
 */
export type FollowEntityTaskResult = Message<"soulfire.v1.FollowEntityTaskResult"> & {
  /**
   * @generated from field: soulfire.v1.WorldPosition final_position = 1;
   */
  finalPosition?: WorldPosition | undefined;

  /**
   * @generated from field: soulfire.v1.FollowEntityCompletionReason reason = 2;
   */
  reason: FollowEntityCompletionReason;
};

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

/**
 * Core task input for chasing and attacking one connection-scoped entity.
 *
 * @generated from message soulfire.v1.AttackEntityTask
 */
export type AttackEntityTask = Message<"soulfire.v1.AttackEntityTask"> & {
  /**
   * @generated from field: soulfire.v1.EntityReference target = 1;
   */
  target?: EntityReference | undefined;

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

  /**
   * @generated from field: float attack_range = 3;
   */
  attackRange: number;

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

  /**
   * Zero attacks until the target is defeated.
   *
   * @generated from field: uint32 maximum_attacks = 5;
   */
  maximumAttacks: number;

  /**
   * How long the target may remain unobservable before the task completes.
   * Zero selects the server default.
   *
   * @generated from field: uint32 target_unavailable_timeout_seconds = 6;
   */
  targetUnavailableTimeoutSeconds: number;

  /**
   * Defaults to true. Selects the strongest matching melee weapon.
   *
   * @generated from field: optional bool select_best_weapon = 7;
   */
  selectBestWeapon?: boolean | undefined;

  /**
   * Restricts automatic weapon selection.
   *
   * @generated from field: optional soulfire.v1.ItemSelector weapon = 8;
   */
  weapon?: ItemSelector | undefined;

  /**
   * Restores the selected hotbar slot when the task stops.
   *
   * @generated from field: bool restore_selected_slot = 9;
   */
  restoreSelectedSlot: boolean;

  /**
   * Uses an equipped offhand shield while approaching and between attacks.
   *
   * @generated from field: bool use_offhand_shield = 10;
   */
  useOffhandShield: boolean;
};

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

/**
 * @generated from message soulfire.v1.AttackEntityTaskResult
 */
export type AttackEntityTaskResult = Message<"soulfire.v1.AttackEntityTaskResult"> & {
  /**
   * @generated from field: soulfire.v1.WorldPosition final_position = 1;
   */
  finalPosition?: WorldPosition | undefined;

  /**
   * @generated from field: soulfire.v1.AttackEntityCompletionReason reason = 2;
   */
  reason: AttackEntityCompletionReason;

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

  /**
   * @generated from field: bool target_alive = 4;
   */
  targetAlive: boolean;
};

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

/**
 * Finds the nearest matching entity, attacks it, and optionally keeps hunting.
 *
 * @generated from message soulfire.v1.AttackNearestTask
 */
export type AttackNearestTask = Message<"soulfire.v1.AttackNearestTask"> & {
  /**
   * @generated from field: soulfire.v1.EntitySelector selector = 1;
   */
  selector?: EntitySelector | undefined;

  /**
   * Search radius around the bot. Zero selects the server default.
   *
   * @generated from field: float radius = 2;
   */
  radius: number;

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

  /**
   * @generated from field: float attack_range = 4;
   */
  attackRange: number;

  /**
   * @generated from field: bool sprinting = 5;
   */
  sprinting: boolean;

  /**
   * Zero allows an unlimited number of attacks.
   *
   * @generated from field: uint32 maximum_attacks = 6;
   */
  maximumAttacks: number;

  /**
   * Zero allows an unlimited number of defeated targets.
   *
   * @generated from field: uint32 maximum_targets = 7;
   */
  maximumTargets: number;

  /**
   * Zero waits indefinitely when no target matches.
   *
   * @generated from field: uint32 no_target_timeout_seconds = 8;
   */
  noTargetTimeoutSeconds: number;

  /**
   * Completes immediately when no matching target is observable.
   *
   * @generated from field: bool complete_when_no_target = 9;
   */
  completeWhenNoTarget: boolean;

  /**
   * @generated from field: optional bool select_best_weapon = 10;
   */
  selectBestWeapon?: boolean | undefined;

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

  /**
   * @generated from field: bool restore_selected_slot = 12;
   */
  restoreSelectedSlot: boolean;
};

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

/**
 * @generated from message soulfire.v1.AttackNearestTaskResult
 */
export type AttackNearestTaskResult = Message<"soulfire.v1.AttackNearestTaskResult"> & {
  /**
   * @generated from field: soulfire.v1.WorldPosition final_position = 1;
   */
  finalPosition?: WorldPosition | undefined;

  /**
   * @generated from field: soulfire.v1.AttackNearestCompletionReason reason = 2;
   */
  reason: AttackNearestCompletionReason;

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

  /**
   * @generated from field: uint32 targets_defeated = 4;
   */
  targetsDefeated: number;
};

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

/**
 * Maintains ranged spacing, leads the target, compensates for projectile
 * gravity, and fires a bow or crossbow.
 *
 * @generated from message soulfire.v1.RangedAttackTask
 */
export type RangedAttackTask = Message<"soulfire.v1.RangedAttackTask"> & {
  /**
   * @generated from field: soulfire.v1.EntityReference target = 1;
   */
  target?: EntityReference | undefined;

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

  /**
   * Zero selects the server default.
   *
   * @generated from field: float minimum_range = 3;
   */
  minimumRange: number;

  /**
   * Zero selects the server default.
   *
   * @generated from field: float maximum_range = 4;
   */
  maximumRange: number;

  /**
   * Zero fires until the target is defeated.
   *
   * @generated from field: uint32 maximum_shots = 5;
   */
  maximumShots: number;

  /**
   * Zero selects the server default.
   *
   * @generated from field: uint32 target_unavailable_timeout_seconds = 6;
   */
  targetUnavailableTimeoutSeconds: number;

  /**
   * Restricts automatic bow or crossbow selection.
   *
   * @generated from field: optional soulfire.v1.ItemSelector weapon = 7;
   */
  weapon?: ItemSelector | undefined;

  /**
   * Bow draw duration. Crossbows use their item-specific charge duration.
   *
   * @generated from field: uint32 bow_draw_ticks = 8;
   */
  bowDrawTicks: number;

  /**
   * @generated from field: bool lead_target = 9;
   */
  leadTarget: boolean;

  /**
   * @generated from field: bool compensate_gravity = 10;
   */
  compensateGravity: boolean;

  /**
   * @generated from field: bool strafe = 11;
   */
  strafe: boolean;

  /**
   * @generated from field: bool restore_selected_slot = 12;
   */
  restoreSelectedSlot: boolean;
};

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

/**
 * @generated from message soulfire.v1.RangedAttackTaskResult
 */
export type RangedAttackTaskResult = Message<"soulfire.v1.RangedAttackTaskResult"> & {
  /**
   * @generated from field: soulfire.v1.WorldPosition final_position = 1;
   */
  finalPosition?: WorldPosition | undefined;

  /**
   * @generated from field: soulfire.v1.RangedAttackCompletionReason reason = 2;
   */
  reason: RangedAttackCompletionReason;

  /**
   * @generated from field: uint32 shots_released = 3;
   */
  shotsReleased: number;

  /**
   * @generated from field: bool target_alive = 4;
   */
  targetAlive: boolean;
};

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

/**
 * Moves away from the nearest matching threat until the configured distance is safe.
 *
 * @generated from message soulfire.v1.FleeTask
 */
export type FleeTask = Message<"soulfire.v1.FleeTask"> & {
  /**
   * @generated from field: soulfire.v1.EntitySelector threats = 1;
   */
  threats?: EntitySelector | undefined;

  /**
   * Starts escaping when a threat is within this distance.
   *
   * @generated from field: float trigger_radius = 2;
   */
  triggerRadius: number;

  /**
   * Minimum distance from the selected threat before an escape completes.
   *
   * @generated from field: float safe_distance = 3;
   */
  safeDistance: number;

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

  /**
   * Number of continuously safe seconds before completion.
   *
   * @generated from field: uint32 safe_seconds = 5;
   */
  safeSeconds: number;

  /**
   * Keeps monitoring when false.
   *
   * @generated from field: bool complete_when_safe = 6;
   */
  completeWhenSafe: boolean;

  /**
   * Zero allows unlimited escape cycles.
   *
   * @generated from field: uint32 maximum_escapes = 7;
   */
  maximumEscapes: number;
};

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

/**
 * @generated from message soulfire.v1.FleeTaskResult
 */
export type FleeTaskResult = Message<"soulfire.v1.FleeTaskResult"> & {
  /**
   * @generated from field: soulfire.v1.WorldPosition final_position = 1;
   */
  finalPosition?: WorldPosition | undefined;

  /**
   * @generated from field: soulfire.v1.FleeCompletionReason reason = 2;
   */
  reason: FleeCompletionReason;

  /**
   * @generated from field: uint32 escapes = 3;
   */
  escapes: number;
};

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

/**
 * Defends a fixed position or live entity from matching threats.
 *
 * @generated from message soulfire.v1.GuardTask
 */
export type GuardTask = Message<"soulfire.v1.GuardTask"> & {
  /**
   * @generated from oneof soulfire.v1.GuardTask.subject
   */
  subject: {
    /**
     * @generated from field: soulfire.v1.BlockPosition position = 1;
     */
    value: BlockPosition;
    case: "position";
  } | {
    /**
     * @generated from field: soulfire.v1.EntityReference entity = 2;
     */
    value: EntityReference;
    case: "entity";
  } | { case: undefined; value?: undefined };

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

  /**
   * Threat search radius around the protected subject.
   *
   * @generated from field: float guard_radius = 4;
   */
  guardRadius: number;

  /**
   * Stops chasing when the bot or target exceeds this distance from the subject.
   *
   * @generated from field: float maximum_pursuit_distance = 5;
   */
  maximumPursuitDistance: number;

  /**
   * Distance from the subject at which the return path completes.
   *
   * @generated from field: float return_radius = 6;
   */
  returnRadius: number;

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

  /**
   * @generated from field: float attack_range = 8;
   */
  attackRange: number;

  /**
   * @generated from field: bool sprinting = 9;
   */
  sprinting: boolean;

  /**
   * @generated from field: uint32 maximum_attacks = 10;
   */
  maximumAttacks: number;

  /**
   * @generated from field: uint32 maximum_targets = 11;
   */
  maximumTargets: number;

  /**
   * Completes after the area stays clear for this many seconds.
   *
   * @generated from field: bool complete_when_clear = 12;
   */
  completeWhenClear: boolean;

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

  /**
   * @generated from field: optional bool select_best_weapon = 14;
   */
  selectBestWeapon?: boolean | undefined;

  /**
   * @generated from field: optional soulfire.v1.ItemSelector weapon = 15;
   */
  weapon?: ItemSelector | undefined;

  /**
   * @generated from field: bool restore_selected_slot = 16;
   */
  restoreSelectedSlot: boolean;
};

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

/**
 * @generated from message soulfire.v1.GuardTaskResult
 */
export type GuardTaskResult = Message<"soulfire.v1.GuardTaskResult"> & {
  /**
   * @generated from field: soulfire.v1.WorldPosition final_position = 1;
   */
  finalPosition?: WorldPosition | undefined;

  /**
   * @generated from field: soulfire.v1.GuardCompletionReason reason = 2;
   */
  reason: GuardCompletionReason;

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

  /**
   * @generated from field: uint32 targets_defeated = 4;
   */
  targetsDefeated: number;
};

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

/**
 * Finds, approaches, and enters a bed. A supplied position pins the task to
 * one bed; otherwise the nearest loaded bed is selected.
 *
 * @generated from message soulfire.v1.SleepTask
 */
export type SleepTask = Message<"soulfire.v1.SleepTask"> & {
  /**
   * @generated from field: optional soulfire.v1.BlockPosition bed = 1;
   */
  bed?: BlockPosition | undefined;

  /**
   * Search radius used when bed is omitted. Zero selects the server default.
   *
   * @generated from field: uint32 search_radius = 2;
   */
  searchRadius: number;

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

  /**
   * Keeps retrying while sleep is unavailable, such as during daytime.
   *
   * @generated from field: bool wait_until_possible = 4;
   */
  waitUntilPossible: boolean;

  /**
   * Delay between rejected sleep attempts. Zero selects the server default.
   *
   * @generated from field: uint32 retry_interval_ticks = 5;
   */
  retryIntervalTicks: number;
};

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

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

  /**
   * @generated from field: soulfire.v1.SleepCompletionReason reason = 2;
   */
  reason: SleepCompletionReason;
};

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

/**
 * Casts, detects bites on the game thread, reels in, and repeats.
 *
 * @generated from message soulfire.v1.FishTask
 */
export type FishTask = Message<"soulfire.v1.FishTask"> & {
  /**
   * Zero keeps fishing until cancellation.
   *
   * @generated from field: uint32 maximum_catches = 1;
   */
  maximumCatches: number;

  /**
   * Restricts which fishing rod may be selected.
   *
   * @generated from field: optional soulfire.v1.ItemSelector rod = 2;
   */
  rod?: ItemSelector | undefined;

  /**
   * Zero selects the server default.
   *
   * @generated from field: uint32 cast_timeout_ticks = 3;
   */
  castTimeoutTicks: number;

  /**
   * Zero selects the server default.
   *
   * @generated from field: uint32 bite_timeout_ticks = 4;
   */
  biteTimeoutTicks: number;

  /**
   * @generated from field: bool complete_when_no_rod = 5;
   */
  completeWhenNoRod: boolean;

  /**
   * @generated from field: bool restore_selected_slot = 6;
   */
  restoreSelectedSlot: boolean;

  /**
   * Zero allows failed casts until another completion condition is met.
   *
   * @generated from field: uint32 maximum_failed_casts = 7;
   */
  maximumFailedCasts: number;
};

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

/**
 * @generated from message soulfire.v1.FishTaskResult
 */
export type FishTaskResult = Message<"soulfire.v1.FishTaskResult"> & {
  /**
   * @generated from field: soulfire.v1.FishCompletionReason reason = 1;
   */
  reason: FishCompletionReason;

  /**
   * @generated from field: uint32 catches = 2;
   */
  catches: number;

  /**
   * @generated from field: uint32 failed_casts = 3;
   */
  failedCasts: number;
};

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

/**
 * Harvests mature crops in a bounded area and replants crops that require it.
 * An omitted center follows the bot between scans.
 *
 * @generated from message soulfire.v1.FarmTask
 */
export type FarmTask = Message<"soulfire.v1.FarmTask"> & {
  /**
   * Empty selects every crop strategy supported by the server.
   *
   * @generated from field: repeated string crop_ids = 1;
   */
  cropIds: string[];

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

  /**
   * Zero selects the server default.
   *
   * @generated from field: uint32 radius = 3;
   */
  radius: number;

  /**
   * Zero keeps farming until cancellation.
   *
   * @generated from field: uint32 maximum_harvests = 4;
   */
  maximumHarvests: number;

  /**
   * @generated from field: bool replant = 5;
   */
  replant: boolean;

  /**
   * Completes instead of waiting for another crop to mature.
   *
   * @generated from field: bool complete_when_no_mature_crops = 6;
   */
  completeWhenNoMatureCrops: boolean;

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

  /**
   * Delay between scans when no mature crop is available.
   * Zero selects the server default.
   *
   * @generated from field: uint32 rescan_interval_ticks = 8;
   */
  rescanIntervalTicks: number;

  /**
   * @generated from field: bool restore_selected_slot = 9;
   */
  restoreSelectedSlot: boolean;
};

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

/**
 * @generated from message soulfire.v1.FarmTaskResult
 */
export type FarmTaskResult = Message<"soulfire.v1.FarmTaskResult"> & {
  /**
   * @generated from field: soulfire.v1.FarmCompletionReason reason = 1;
   */
  reason: FarmCompletionReason;

  /**
   * @generated from field: uint32 crops_harvested = 2;
   */
  cropsHarvested: number;

  /**
   * @generated from field: uint32 crops_replanted = 3;
   */
  cropsReplanted: number;

  /**
   * @generated from field: uint32 failed_harvests = 4;
   */
  failedHarvests: number;

  /**
   * @generated from field: soulfire.v1.WorldPosition final_position = 5;
   */
  finalPosition?: WorldPosition | undefined;
};

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

/**
 * Feeds compatible adult animals and confirms the server love-mode event for
 * both parents.
 *
 * @generated from message soulfire.v1.BreedTask
 */
export type BreedTask = Message<"soulfire.v1.BreedTask"> & {
  /**
   * Empty selects every observable Animal subtype.
   *
   * @generated from field: soulfire.v1.EntitySelector animals = 1;
   */
  animals?: EntitySelector | undefined;

  /**
   * Empty accepts any item recognized as food by both selected animals.
   *
   * @generated from field: optional soulfire.v1.ItemSelector food = 2;
   */
  food?: ItemSelector | undefined;

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

  /**
   * Zero selects the server default.
   *
   * @generated from field: uint32 radius = 4;
   */
  radius: number;

  /**
   * Zero keeps breeding pairs until cancellation.
   *
   * @generated from field: uint32 maximum_pairs = 5;
   */
  maximumPairs: number;

  /**
   * @generated from field: bool complete_when_no_pair = 6;
   */
  completeWhenNoPair: boolean;

  /**
   * @generated from field: bool complete_when_no_food = 7;
   */
  completeWhenNoFood: boolean;

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

  /**
   * Delay between scans when no compatible pair is available.
   * Zero selects the server default.
   *
   * @generated from field: uint32 rescan_interval_ticks = 9;
   */
  rescanIntervalTicks: number;

  /**
   * Zero selects the server default.
   *
   * @generated from field: uint32 breeding_timeout_ticks = 10;
   */
  breedingTimeoutTicks: number;

  /**
   * @generated from field: bool restore_selected_slot = 11;
   */
  restoreSelectedSlot: boolean;
};

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

/**
 * @generated from message soulfire.v1.BreedTaskResult
 */
export type BreedTaskResult = Message<"soulfire.v1.BreedTaskResult"> & {
  /**
   * @generated from field: soulfire.v1.BreedCompletionReason reason = 1;
   */
  reason: BreedCompletionReason;

  /**
   * @generated from field: uint32 pairs_started = 2;
   */
  pairsStarted: number;

  /**
   * @generated from field: uint32 animals_fed = 3;
   */
  animalsFed: number;

  /**
   * @generated from field: uint32 failed_pairs = 4;
   */
  failedPairs: number;

  /**
   * @generated from field: soulfire.v1.WorldPosition final_position = 5;
   */
  finalPosition?: WorldPosition | undefined;
};

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

/**
 * Visits coordinated frontier cells around an origin.
 *
 * @generated from message soulfire.v1.ExploreTask
 */
export type ExploreTask = Message<"soulfire.v1.ExploreTask"> & {
  /**
   * Omitted origin uses the bot position when the task starts.
   *
   * @generated from field: optional soulfire.v1.BlockPosition origin = 1;
   */
  origin?: BlockPosition | undefined;

  /**
   * Maximum horizontal distance from the origin. Zero selects the server
   * default.
   *
   * @generated from field: uint32 radius = 2;
   */
  radius: number;

  /**
   * Distance between frontier cells. Zero selects the server default.
   *
   * @generated from field: uint32 waypoint_spacing = 3;
   */
  waypointSpacing: number;

  /**
   * Zero explores every frontier cell or runs until cancellation.
   *
   * @generated from field: uint32 maximum_waypoints = 4;
   */
  maximumWaypoints: number;

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

  /**
   * Returns to the origin after a bounded waypoint limit.
   *
   * @generated from field: bool return_to_origin = 6;
   */
  returnToOrigin: boolean;

  /**
   * Shared purpose groups frontier claims across bots.
   *
   * @generated from field: string purpose = 7;
   */
  purpose: string;
};

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

/**
 * @generated from message soulfire.v1.ExploreTaskResult
 */
export type ExploreTaskResult = Message<"soulfire.v1.ExploreTaskResult"> & {
  /**
   * @generated from field: soulfire.v1.ExploreCompletionReason reason = 1;
   */
  reason: ExploreCompletionReason;

  /**
   * @generated from field: uint32 waypoints_visited = 2;
   */
  waypointsVisited: number;

  /**
   * @generated from field: uint32 failed_routes = 3;
   */
  failedRoutes: number;

  /**
   * @generated from field: double horizontal_distance_traveled = 4;
   */
  horizontalDistanceTraveled: number;

  /**
   * @generated from field: soulfire.v1.WorldPosition final_position = 5;
   */
  finalPosition?: WorldPosition | undefined;
};

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

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

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

  /**
   * Transfers as much as possible instead of failing when the source count or
   * destination capacity is smaller than count.
   *
   * @generated from field: bool allow_partial = 3;
   */
  allowPartial: boolean;
};

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

/**
 * Navigates to a block container, opens it, and performs semantic transfers.
 *
 * @generated from message soulfire.v1.ContainerTransferTask
 */
export type ContainerTransferTask = Message<"soulfire.v1.ContainerTransferTask"> & {
  /**
   * @generated from field: soulfire.v1.BlockPosition container = 1;
   */
  container?: BlockPosition | undefined;

  /**
   * @generated from field: soulfire.v1.ContainerTransferDirection direction = 2;
   */
  direction: ContainerTransferDirection;

  /**
   * @generated from field: repeated soulfire.v1.ContainerTransferOperation operations = 3;
   */
  operations: ContainerTransferOperation[];

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

  /**
   * Closes the menu after a successful transfer. Failed or cancelled tasks
   * always close a menu they opened.
   *
   * @generated from field: bool close_container = 5;
   */
  closeContainer: boolean;
};

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

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

  /**
   * @generated from field: uint32 requested = 2;
   */
  requested: number;

  /**
   * @generated from field: uint32 transferred = 3;
   */
  transferred: number;
};

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

/**
 * @generated from message soulfire.v1.ContainerTransferTaskResult
 */
export type ContainerTransferTaskResult = Message<"soulfire.v1.ContainerTransferTaskResult"> & {
  /**
   * @generated from field: soulfire.v1.ContainerTransferCompletionReason reason = 1;
   */
  reason: ContainerTransferCompletionReason;

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

  /**
   * @generated from field: uint32 total_transferred = 3;
   */
  totalTransferred: number;

  /**
   * @generated from field: uint64 container_revision = 4;
   */
  containerRevision: bigint;

  /**
   * @generated from field: soulfire.v1.WorldPosition final_position = 5;
   */
  finalPosition?: WorldPosition | undefined;
};

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

/**
 * Core task input for resource-aware automatic eating.
 *
 * @generated from message soulfire.v1.AutoEatTask
 */
export type AutoEatTask = Message<"soulfire.v1.AutoEatTask"> & {
  /**
   * Empty selects any safe edible food.
   *
   * @generated from field: repeated string food_item_ids = 1;
   */
  foodItemIds: string[];

  /**
   * Zero selects the server default of 14.
   *
   * @generated from field: uint32 food_level = 2;
   */
  foodLevel: number;

  /**
   * Zero selects the server default.
   *
   * @generated from field: uint32 check_interval_ticks = 3;
   */
  checkIntervalTicks: number;

  /**
   * Zero keeps the task active until cancelled.
   *
   * @generated from field: uint32 maximum_meals = 4;
   */
  maximumMeals: number;

  /**
   * @generated from field: bool complete_when_no_food = 5;
   */
  completeWhenNoFood: boolean;

  /**
   * @generated from field: bool restore_selected_slot = 6;
   */
  restoreSelectedSlot: boolean;
};

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

/**
 * @generated from message soulfire.v1.AutoEatTaskResult
 */
export type AutoEatTaskResult = Message<"soulfire.v1.AutoEatTaskResult"> & {
  /**
   * @generated from field: soulfire.v1.AutoEatCompletionReason reason = 1;
   */
  reason: AutoEatCompletionReason;

  /**
   * @generated from field: uint32 meals_eaten = 2;
   */
  mealsEaten: number;

  /**
   * @generated from field: uint32 final_food_level = 3;
   */
  finalFoodLevel: number;
};

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

/**
 * Core task input for automatically respawning after death.
 *
 * @generated from message soulfire.v1.AutoRespawnTask
 */
export type AutoRespawnTask = Message<"soulfire.v1.AutoRespawnTask"> & {
  /**
   * Delay between observing death and requesting a respawn.
   *
   * @generated from field: uint32 respawn_delay_ticks = 1;
   */
  respawnDelayTicks: number;

  /**
   * Zero keeps the task active until cancelled.
   *
   * @generated from field: uint32 maximum_respawns = 2;
   */
  maximumRespawns: number;
};

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

/**
 * @generated from message soulfire.v1.AutoRespawnTaskResult
 */
export type AutoRespawnTaskResult = Message<"soulfire.v1.AutoRespawnTaskResult"> & {
  /**
   * @generated from field: soulfire.v1.AutoRespawnCompletionReason reason = 1;
   */
  reason: AutoRespawnCompletionReason;

  /**
   * @generated from field: uint32 respawns = 2;
   */
  respawns: number;
};

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

/**
 * Core task input for keeping a totem in the offhand.
 *
 * @generated from message soulfire.v1.AutoTotemTask
 */
export type AutoTotemTask = Message<"soulfire.v1.AutoTotemTask"> & {
  /**
   * Zero selects the server default.
   *
   * @generated from field: uint32 check_interval_ticks = 1;
   */
  checkIntervalTicks: number;

  /**
   * Zero keeps the task active until cancelled.
   *
   * @generated from field: uint32 maximum_equips = 2;
   */
  maximumEquips: number;

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

  /**
   * When false, a non-totem offhand item is left untouched.
   *
   * @generated from field: bool replace_occupied_offhand = 4;
   */
  replaceOccupiedOffhand: boolean;
};

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

/**
 * @generated from message soulfire.v1.AutoTotemTaskResult
 */
export type AutoTotemTaskResult = Message<"soulfire.v1.AutoTotemTaskResult"> & {
  /**
   * @generated from field: soulfire.v1.AutoTotemCompletionReason reason = 1;
   */
  reason: AutoTotemCompletionReason;

  /**
   * @generated from field: uint32 equips = 2;
   */
  equips: number;
};

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

/**
 * Core task input for keeping the strongest available armor equipped.
 *
 * @generated from message soulfire.v1.AutoArmorTask
 */
export type AutoArmorTask = Message<"soulfire.v1.AutoArmorTask"> & {
  /**
   * Zero selects the server default.
   *
   * @generated from field: uint32 check_interval_ticks = 1;
   */
  checkIntervalTicks: number;

  /**
   * Zero keeps the task active until cancelled.
   *
   * @generated from field: uint32 maximum_equips = 2;
   */
  maximumEquips: number;

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

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

/**
 * @generated from message soulfire.v1.AutoArmorTaskResult
 */
export type AutoArmorTaskResult = Message<"soulfire.v1.AutoArmorTaskResult"> & {
  /**
   * @generated from field: soulfire.v1.AutoArmorCompletionReason reason = 1;
   */
  reason: AutoArmorCompletionReason;

  /**
   * @generated from field: uint32 equips = 2;
   */
  equips: number;
};

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

/**
 * Core task input for finding and mining matching blocks.
 *
 * @generated from message soulfire.v1.CollectBlocksTask
 */
export type CollectBlocksTask = Message<"soulfire.v1.CollectBlocksTask"> & {
  /**
   * @generated from field: repeated string block_ids = 1;
   */
  blockIds: string[];

  /**
   * @generated from field: repeated string tags = 2;
   */
  tags: string[];

  /**
   * Zero selects one block.
   *
   * @generated from field: uint32 count = 3;
   */
  count: number;

  /**
   * Zero selects the server default.
   *
   * @generated from field: uint32 search_radius = 4;
   */
  searchRadius: number;

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

  /**
   * Excludes targets with fluid above them up to the bot's current elevation.
   * Useful when a caller cannot safely manage underwater collection.
   *
   * @generated from field: bool avoid_submerged_targets = 6;
   */
  avoidSubmergedTargets: boolean;

  /**
   * Only selects targets that the bot can currently see. Visibility is
   * reevaluated after every collected block, allowing newly exposed targets
   * to become eligible without routing toward hidden blocks.
   *
   * @generated from field: bool require_line_of_sight = 7;
   */
  requireLineOfSight: boolean;

  /**
   * Restricts candidate block elevations. An omitted bound is unbounded.
   *
   * @generated from field: soulfire.v1.IntRange target_y_range = 8;
   */
  targetYRange?: IntRange | undefined;
};

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

/**
 * @generated from message soulfire.v1.CollectBlocksTaskResult
 */
export type CollectBlocksTaskResult = Message<"soulfire.v1.CollectBlocksTaskResult"> & {
  /**
   * @generated from field: soulfire.v1.CollectBlocksCompletionReason reason = 1;
   */
  reason: CollectBlocksCompletionReason;

  /**
   * @generated from field: uint32 blocks_broken = 2;
   */
  blocksBroken: number;

  /**
   * @generated from field: soulfire.v1.WorldPosition final_position = 3;
   */
  finalPosition?: WorldPosition | undefined;
};

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

/**
 * Live diagnostics for a running block collection task. This is packed into
 * BotTaskProgress.detail so SDK clients can explain which blocks and approach
 * positions the server is currently considering without changing task
 * execution.
 *
 * @generated from message soulfire.v1.CollectBlocksTaskProgressDetail
 */
export type CollectBlocksTaskProgressDetail = Message<"soulfire.v1.CollectBlocksTaskProgressDetail"> & {
  /**
   * @generated from field: soulfire.v1.CollectBlocksTaskProgressDetail.Phase phase = 1;
   */
  phase: CollectBlocksTaskProgressDetail_Phase;

  /**
   * @generated from field: soulfire.v1.BlockPosition player_position = 2;
   */
  playerPosition?: BlockPosition | undefined;

  /**
   * @generated from field: repeated soulfire.v1.BlockPosition active_targets = 3;
   */
  activeTargets: BlockPosition[];

  /**
   * @generated from field: repeated soulfire.v1.BlockPosition rejected_targets = 4;
   */
  rejectedTargets: BlockPosition[];

  /**
   * @generated from field: repeated soulfire.v1.CollectBlocksTaskProgressDetail.FailedApproach failed_approaches = 5;
   */
  failedApproaches: CollectBlocksTaskProgressDetail_FailedApproach[];

  /**
   * @generated from field: bool path_planning = 6;
   */
  pathPlanning: boolean;

  /**
   * @generated from field: uint32 path_current_movement = 7;
   */
  pathCurrentMovement: number;

  /**
   * @generated from field: uint32 path_total_movements = 8;
   */
  pathTotalMovements: number;

  /**
   * @generated from field: repeated soulfire.v1.BlockPosition completed_breaks = 9;
   */
  completedBreaks: BlockPosition[];

  /**
   * @generated from field: uint32 consecutive_stalled_paths = 10;
   */
  consecutiveStalledPaths: number;
};

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

/**
 * @generated from message soulfire.v1.CollectBlocksTaskProgressDetail.FailedApproach
 */
export type CollectBlocksTaskProgressDetail_FailedApproach = Message<"soulfire.v1.CollectBlocksTaskProgressDetail.FailedApproach"> & {
  /**
   * @generated from field: soulfire.v1.BlockPosition target = 1;
   */
  target?: BlockPosition | undefined;

  /**
   * @generated from field: repeated soulfire.v1.BlockPosition player_positions = 2;
   */
  playerPositions: BlockPosition[];
};

/**
 * Describes the message soulfire.v1.CollectBlocksTaskProgressDetail.FailedApproach.
 * Use `create(CollectBlocksTaskProgressDetail_FailedApproachSchema)` to create a new message.
 */
export const CollectBlocksTaskProgressDetail_FailedApproachSchema: GenMessage<CollectBlocksTaskProgressDetail_FailedApproach> = /*@__PURE__*/
  messageDesc(file_soulfire_task, 49, 0);

/**
 * @generated from enum soulfire.v1.CollectBlocksTaskProgressDetail.Phase
 */
export enum CollectBlocksTaskProgressDetail_Phase {
  /**
   * @generated from enum value: PHASE_UNSPECIFIED = 0;
   */
  UNSPECIFIED = 0,

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

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

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

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

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

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

/**
 * Describes the enum soulfire.v1.CollectBlocksTaskProgressDetail.Phase.
 */
export const CollectBlocksTaskProgressDetail_PhaseSchema: GenEnum<CollectBlocksTaskProgressDetail_Phase> = /*@__PURE__*/
  enumDesc(file_soulfire_task, 49, 0);

/**
 * Clears every diggable block in an inclusive cuboid.
 *
 * @generated from message soulfire.v1.ExcavateTask
 */
export type ExcavateTask = Message<"soulfire.v1.ExcavateTask"> & {
  /**
   * @generated from field: soulfire.v1.BlockPosition corner_a = 1;
   */
  cornerA?: BlockPosition | undefined;

  /**
   * @generated from field: soulfire.v1.BlockPosition corner_b = 2;
   */
  cornerB?: BlockPosition | undefined;

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

  /**
   * Zero clears the whole cuboid. A positive limit bounds the task.
   *
   * @generated from field: uint32 maximum_blocks = 4;
   */
  maximumBlocks: number;
};

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

/**
 * @generated from message soulfire.v1.ExcavateTaskResult
 */
export type ExcavateTaskResult = Message<"soulfire.v1.ExcavateTaskResult"> & {
  /**
   * @generated from field: soulfire.v1.ExcavateCompletionReason reason = 1;
   */
  reason: ExcavateCompletionReason;

  /**
   * @generated from field: uint32 blocks_broken = 2;
   */
  blocksBroken: number;

  /**
   * @generated from field: uint32 blocks_skipped = 3;
   */
  blocksSkipped: number;

  /**
   * @generated from field: uint32 unreachable_blocks = 4;
   */
  unreachableBlocks: number;

  /**
   * @generated from field: soulfire.v1.WorldPosition final_position = 5;
   */
  finalPosition?: WorldPosition | undefined;
};

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

/**
 * @generated from message soulfire.v1.BuildOffset
 */
export type BuildOffset = Message<"soulfire.v1.BuildOffset"> & {
  /**
   * @generated from field: sint32 x = 1;
   */
  x: number;

  /**
   * @generated from field: sint32 y = 2;
   */
  y: number;

  /**
   * @generated from field: sint32 z = 3;
   */
  z: number;
};

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

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

  /**
   * @generated from field: string block_id = 2;
   */
  blockId: string;

  /**
   * @generated from field: map<string, string> properties = 3;
   */
  properties: { [key: string]: string };
};

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

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

  /**
   * @generated from field: repeated string replacement_block_ids = 2;
   */
  replacementBlockIds: string[];
};

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

/**
 * Builds an inline schematic relative to origin.
 *
 * @generated from message soulfire.v1.BuildTask
 */
export type BuildTask = Message<"soulfire.v1.BuildTask"> & {
  /**
   * @generated from field: soulfire.v1.BlockPosition origin = 1;
   */
  origin?: BlockPosition | undefined;

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

  /**
   * @generated from field: soulfire.v1.BuildRotation rotation = 3;
   */
  rotation: BuildRotation;

  /**
   * @generated from field: soulfire.v1.BuildMirror mirror = 4;
   */
  mirror: BuildMirror;

  /**
   * @generated from field: repeated soulfire.v1.BuildMaterialSubstitution substitutions = 5;
   */
  substitutions: BuildMaterialSubstitution[];

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

  /**
   * @generated from field: bool break_incorrect_blocks = 7;
   */
  breakIncorrectBlocks: boolean;

  /**
   * @generated from field: bool restore_selected_slot = 8;
   */
  restoreSelectedSlot: boolean;

  /**
   * Deterministically assigns blocks by transformed placement index.
   *
   * @generated from field: uint32 partition_index = 9;
   */
  partitionIndex: number;

  /**
   * One means no partitioning. Zero also selects one.
   *
   * @generated from field: uint32 partition_count = 10;
   */
  partitionCount: number;
};

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

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

  /**
   * @generated from field: string requested_block_id = 2;
   */
  requestedBlockId: string;

  /**
   * @generated from field: string placed_block_id = 3;
   */
  placedBlockId: string;

  /**
   * @generated from field: soulfire.v1.BuildBlockStatus status = 4;
   */
  status: BuildBlockStatus;

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

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

/**
 * @generated from message soulfire.v1.BuildTaskResult
 */
export type BuildTaskResult = Message<"soulfire.v1.BuildTaskResult"> & {
  /**
   * @generated from field: soulfire.v1.BuildCompletionReason reason = 1;
   */
  reason: BuildCompletionReason;

  /**
   * @generated from field: uint32 blocks_placed = 2;
   */
  blocksPlaced: number;

  /**
   * @generated from field: uint32 blocks_already_correct = 3;
   */
  blocksAlreadyCorrect: number;

  /**
   * @generated from field: uint32 incorrect_blocks_broken = 4;
   */
  incorrectBlocksBroken: number;

  /**
   * @generated from field: uint32 blocks_failed = 5;
   */
  blocksFailed: number;

  /**
   * @generated from field: repeated soulfire.v1.BuildBlockOutcome outcomes = 6;
   */
  outcomes: BuildBlockOutcome[];

  /**
   * @generated from field: soulfire.v1.WorldPosition final_position = 7;
   */
  finalPosition?: WorldPosition | undefined;
};

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

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

  /**
   * @generated from field: uint32 minimum_count = 2;
   */
  minimumCount: number;

  /**
   * @generated from field: uint32 target_count = 3;
   */
  targetCount: number;

  /**
   * Zero disables excess deposits.
   *
   * @generated from field: uint32 maximum_count = 4;
   */
  maximumCount: number;
};

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

/**
 * Restocks and deposits against a block container until cancelled or bounded.
 *
 * @generated from message soulfire.v1.MaintainLoadoutTask
 */
export type MaintainLoadoutTask = Message<"soulfire.v1.MaintainLoadoutTask"> & {
  /**
   * @generated from field: soulfire.v1.BlockPosition container = 1;
   */
  container?: BlockPosition | undefined;

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

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

  /**
   * Zero selects the server default.
   *
   * @generated from field: uint32 check_interval_ticks = 4;
   */
  checkIntervalTicks: number;

  /**
   * Zero keeps monitoring until cancelled.
   *
   * @generated from field: uint32 maximum_rebalances = 5;
   */
  maximumRebalances: number;

  /**
   * @generated from field: bool complete_when_satisfied = 6;
   */
  completeWhenSatisfied: boolean;

  /**
   * @generated from field: bool close_container = 7;
   */
  closeContainer: boolean;
};

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

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

  /**
   * @generated from field: uint32 final_count = 2;
   */
  finalCount: number;

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

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

  /**
   * @generated from field: bool satisfied = 5;
   */
  satisfied: boolean;
};

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

/**
 * @generated from message soulfire.v1.MaintainLoadoutTaskResult
 */
export type MaintainLoadoutTaskResult = Message<"soulfire.v1.MaintainLoadoutTaskResult"> & {
  /**
   * @generated from field: soulfire.v1.MaintainLoadoutCompletionReason reason = 1;
   */
  reason: MaintainLoadoutCompletionReason;

  /**
   * @generated from field: uint32 rebalances = 2;
   */
  rebalances: number;

  /**
   * @generated from field: uint32 total_withdrawn = 3;
   */
  totalWithdrawn: number;

  /**
   * @generated from field: uint32 total_deposited = 4;
   */
  totalDeposited: number;

  /**
   * @generated from field: repeated soulfire.v1.LoadoutRequirementResult requirements = 5;
   */
  requirements: LoadoutRequirementResult[];

  /**
   * @generated from field: soulfire.v1.WorldPosition final_position = 6;
   */
  finalPosition?: WorldPosition | undefined;
};

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

/**
 * A resource whose mutation must be coordinated between bot tasks.
 *
 * @generated from enum soulfire.v1.BotTaskResource
 */
export enum BotTaskResource {
  /**
   * @generated from enum value: BOT_TASK_RESOURCE_UNSPECIFIED = 0;
   */
  UNSPECIFIED = 0,

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

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

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

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

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

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

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

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

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

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

/**
 * Describes the enum soulfire.v1.BotTaskResource.
 */
export const BotTaskResourceSchema: GenEnum<BotTaskResource> = /*@__PURE__*/
  enumDesc(file_soulfire_task, 0);

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

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

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

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

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

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

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

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

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

  /**
   * @generated from enum value: BOT_TASK_STATUS_TIMED_OUT = 9;
   */
  TIMED_OUT = 9,
}

/**
 * Describes the enum soulfire.v1.BotTaskStatus.
 */
export const BotTaskStatusSchema: GenEnum<BotTaskStatus> = /*@__PURE__*/
  enumDesc(file_soulfire_task, 1);

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

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

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

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

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

/**
 * Describes the enum soulfire.v1.BotTaskConflictPolicy.
 */
export const BotTaskConflictPolicySchema: GenEnum<BotTaskConflictPolicy> = /*@__PURE__*/
  enumDesc(file_soulfire_task, 2);

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

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

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

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

/**
 * Describes the enum soulfire.v1.BotTaskReconnectPolicy.
 */
export const BotTaskReconnectPolicySchema: GenEnum<BotTaskReconnectPolicy> = /*@__PURE__*/
  enumDesc(file_soulfire_task, 3);

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

  /**
   * The task is detached from the RPC that created it and remains active.
   *
   * @generated from enum value: BOT_TASK_DISCONNECT_POLICY_CONTINUE = 1;
   */
  CONTINUE = 1,

  /**
   * The task is cancelled when its RunBotTask stream is cancelled or lost.
   * This policy is rejected by the unary StartBotTask RPC.
   *
   * @generated from enum value: BOT_TASK_DISCONNECT_POLICY_CANCEL_WITH_CALL = 2;
   */
  CANCEL_WITH_CALL = 2,
}

/**
 * Describes the enum soulfire.v1.BotTaskDisconnectPolicy.
 */
export const BotTaskDisconnectPolicySchema: GenEnum<BotTaskDisconnectPolicy> = /*@__PURE__*/
  enumDesc(file_soulfire_task, 4);

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

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

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

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

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

/**
 * Describes the enum soulfire.v1.BotTaskPriority.
 */
export const BotTaskPrioritySchema: GenEnum<BotTaskPriority> = /*@__PURE__*/
  enumDesc(file_soulfire_task, 5);

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

  /**
   * @generated from enum value: FOLLOW_ENTITY_COMPLETION_REASON_TARGET_UNAVAILABLE = 1;
   */
  TARGET_UNAVAILABLE = 1,
}

/**
 * Describes the enum soulfire.v1.FollowEntityCompletionReason.
 */
export const FollowEntityCompletionReasonSchema: GenEnum<FollowEntityCompletionReason> = /*@__PURE__*/
  enumDesc(file_soulfire_task, 6);

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

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

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

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

/**
 * Describes the enum soulfire.v1.AttackEntityCompletionReason.
 */
export const AttackEntityCompletionReasonSchema: GenEnum<AttackEntityCompletionReason> = /*@__PURE__*/
  enumDesc(file_soulfire_task, 7);

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

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

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

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

/**
 * Describes the enum soulfire.v1.AttackNearestCompletionReason.
 */
export const AttackNearestCompletionReasonSchema: GenEnum<AttackNearestCompletionReason> = /*@__PURE__*/
  enumDesc(file_soulfire_task, 8);

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

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

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

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

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

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

/**
 * Describes the enum soulfire.v1.RangedAttackCompletionReason.
 */
export const RangedAttackCompletionReasonSchema: GenEnum<RangedAttackCompletionReason> = /*@__PURE__*/
  enumDesc(file_soulfire_task, 9);

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

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

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

/**
 * Describes the enum soulfire.v1.FleeCompletionReason.
 */
export const FleeCompletionReasonSchema: GenEnum<FleeCompletionReason> = /*@__PURE__*/
  enumDesc(file_soulfire_task, 10);

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

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

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

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

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

/**
 * Describes the enum soulfire.v1.GuardCompletionReason.
 */
export const GuardCompletionReasonSchema: GenEnum<GuardCompletionReason> = /*@__PURE__*/
  enumDesc(file_soulfire_task, 11);

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

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

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

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

/**
 * Describes the enum soulfire.v1.SleepCompletionReason.
 */
export const SleepCompletionReasonSchema: GenEnum<SleepCompletionReason> = /*@__PURE__*/
  enumDesc(file_soulfire_task, 12);

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

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

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

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

/**
 * Describes the enum soulfire.v1.FishCompletionReason.
 */
export const FishCompletionReasonSchema: GenEnum<FishCompletionReason> = /*@__PURE__*/
  enumDesc(file_soulfire_task, 13);

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

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

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

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

/**
 * Describes the enum soulfire.v1.FarmCompletionReason.
 */
export const FarmCompletionReasonSchema: GenEnum<FarmCompletionReason> = /*@__PURE__*/
  enumDesc(file_soulfire_task, 14);

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

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

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

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

/**
 * Describes the enum soulfire.v1.BreedCompletionReason.
 */
export const BreedCompletionReasonSchema: GenEnum<BreedCompletionReason> = /*@__PURE__*/
  enumDesc(file_soulfire_task, 15);

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

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

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

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

/**
 * Describes the enum soulfire.v1.ExploreCompletionReason.
 */
export const ExploreCompletionReasonSchema: GenEnum<ExploreCompletionReason> = /*@__PURE__*/
  enumDesc(file_soulfire_task, 16);

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

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

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

/**
 * Describes the enum soulfire.v1.ContainerTransferDirection.
 */
export const ContainerTransferDirectionSchema: GenEnum<ContainerTransferDirection> = /*@__PURE__*/
  enumDesc(file_soulfire_task, 17);

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

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

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

/**
 * Describes the enum soulfire.v1.ContainerTransferCompletionReason.
 */
export const ContainerTransferCompletionReasonSchema: GenEnum<ContainerTransferCompletionReason> = /*@__PURE__*/
  enumDesc(file_soulfire_task, 18);

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

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

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

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

/**
 * Describes the enum soulfire.v1.AutoEatCompletionReason.
 */
export const AutoEatCompletionReasonSchema: GenEnum<AutoEatCompletionReason> = /*@__PURE__*/
  enumDesc(file_soulfire_task, 19);

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

  /**
   * @generated from enum value: AUTO_RESPAWN_COMPLETION_REASON_RESPAWN_LIMIT_REACHED = 1;
   */
  RESPAWN_LIMIT_REACHED = 1,
}

/**
 * Describes the enum soulfire.v1.AutoRespawnCompletionReason.
 */
export const AutoRespawnCompletionReasonSchema: GenEnum<AutoRespawnCompletionReason> = /*@__PURE__*/
  enumDesc(file_soulfire_task, 20);

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

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

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

/**
 * Describes the enum soulfire.v1.AutoTotemCompletionReason.
 */
export const AutoTotemCompletionReasonSchema: GenEnum<AutoTotemCompletionReason> = /*@__PURE__*/
  enumDesc(file_soulfire_task, 21);

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

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

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

/**
 * Describes the enum soulfire.v1.AutoArmorCompletionReason.
 */
export const AutoArmorCompletionReasonSchema: GenEnum<AutoArmorCompletionReason> = /*@__PURE__*/
  enumDesc(file_soulfire_task, 22);

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

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

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

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

/**
 * Describes the enum soulfire.v1.CollectBlocksCompletionReason.
 */
export const CollectBlocksCompletionReasonSchema: GenEnum<CollectBlocksCompletionReason> = /*@__PURE__*/
  enumDesc(file_soulfire_task, 23);

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

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

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

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

/**
 * Describes the enum soulfire.v1.ExcavateCompletionReason.
 */
export const ExcavateCompletionReasonSchema: GenEnum<ExcavateCompletionReason> = /*@__PURE__*/
  enumDesc(file_soulfire_task, 24);

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

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

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

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

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

/**
 * Describes the enum soulfire.v1.BuildRotation.
 */
export const BuildRotationSchema: GenEnum<BuildRotation> = /*@__PURE__*/
  enumDesc(file_soulfire_task, 25);

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

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

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

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

/**
 * Describes the enum soulfire.v1.BuildMirror.
 */
export const BuildMirrorSchema: GenEnum<BuildMirror> = /*@__PURE__*/
  enumDesc(file_soulfire_task, 26);

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

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

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

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

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

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

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

  /**
   * @generated from enum value: BUILD_BLOCK_STATUS_INCORRECT_BLOCK = 7;
   */
  INCORRECT_BLOCK = 7,
}

/**
 * Describes the enum soulfire.v1.BuildBlockStatus.
 */
export const BuildBlockStatusSchema: GenEnum<BuildBlockStatus> = /*@__PURE__*/
  enumDesc(file_soulfire_task, 27);

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

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

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

/**
 * Describes the enum soulfire.v1.BuildCompletionReason.
 */
export const BuildCompletionReasonSchema: GenEnum<BuildCompletionReason> = /*@__PURE__*/
  enumDesc(file_soulfire_task, 28);

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

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

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

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

/**
 * Describes the enum soulfire.v1.MaintainLoadoutCompletionReason.
 */
export const MaintainLoadoutCompletionReasonSchema: GenEnum<MaintainLoadoutCompletionReason> = /*@__PURE__*/
  enumDesc(file_soulfire_task, 29);

/**
 * A provider-independent task service used by both core and plugin tasks.
 *
 * @generated from service soulfire.v1.BotTaskService
 */
export const BotTaskService: GenService<{
  /**
   * @generated from rpc soulfire.v1.BotTaskService.StartBotTask
   */
  startBotTask: {
    methodKind: "unary";
    input: typeof StartBotTaskRequestSchema;
    output: typeof BotTaskSchema;
  },
  /**
   * Starts a task and keeps ownership attached to this streaming RPC.
   *
   * CANCEL_WITH_CALL tasks are cancelled when the stream is cancelled.
   * CONTINUE tasks remain active and can be reattached with WatchBotTask.
   *
   * @generated from rpc soulfire.v1.BotTaskService.RunBotTask
   */
  runBotTask: {
    methodKind: "server_streaming";
    input: typeof StartBotTaskRequestSchema;
    output: typeof BotTaskEventSchema;
  },
  /**
   * @generated from rpc soulfire.v1.BotTaskService.GetBotTask
   */
  getBotTask: {
    methodKind: "unary";
    input: typeof GetBotTaskRequestSchema;
    output: typeof BotTaskSchema;
  },
  /**
   * @generated from rpc soulfire.v1.BotTaskService.ListBotTasks
   */
  listBotTasks: {
    methodKind: "unary";
    input: typeof ListBotTasksRequestSchema;
    output: typeof ListBotTasksResponseSchema;
  },
  /**
   * @generated from rpc soulfire.v1.BotTaskService.WatchBotTask
   */
  watchBotTask: {
    methodKind: "server_streaming";
    input: typeof WatchBotTaskRequestSchema;
    output: typeof BotTaskEventSchema;
  },
  /**
   * @generated from rpc soulfire.v1.BotTaskService.WatchBotTasks
   */
  watchBotTasks: {
    methodKind: "server_streaming";
    input: typeof WatchBotTasksRequestSchema;
    output: typeof BotTaskEventSchema;
  },
  /**
   * @generated from rpc soulfire.v1.BotTaskService.CancelBotTask
   */
  cancelBotTask: {
    methodKind: "unary";
    input: typeof CancelBotTaskRequestSchema;
    output: typeof BotTaskSchema;
  },
}> = /*@__PURE__*/
  serviceDesc(file_soulfire_task, 0);
