// @generated by protoc-gen-es v2.13.0 with parameter "target=ts,import_extension=js"
// @generated from file soulfire/inventory.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 { file_soulfire_api_docs } from "./api_docs_pb.js";
import type { ContainerLayout } from "./bot_pb.js";
import { file_soulfire_bot } from "./bot_pb.js";
import { file_soulfire_bot_live } from "./bot_live_pb.js";
import type { BlockPosition } from "./common_pb.js";
import { file_soulfire_common } from "./common_pb.js";
import type { ItemStackSnapshot, TextComponent } from "./domain_pb.js";
import { file_soulfire_domain } from "./domain_pb.js";
import type { Message } from "@bufbuild/protobuf";

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

/**
 * @generated from message soulfire.v1.ItemSelector
 */
export type ItemSelector = Message<"soulfire.v1.ItemSelector"> & {
  /**
   * @generated from field: repeated string item_ids = 1;
   */
  itemIds: string[];

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

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

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

  /**
   * @generated from field: repeated string enchantment_ids = 5;
   */
  enchantmentIds: string[];

  /**
   * @generated from field: optional int32 minimum_count = 6;
   */
  minimumCount?: number | undefined;

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

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

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

  /**
   * @generated from field: soulfire.v1.InventoryArea area = 2;
   */
  area: InventoryArea;

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

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

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

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

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

  /**
   * @generated from field: int32 state_id = 2;
   */
  stateId: number;

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

  /**
   * @generated from field: string container_type = 4;
   */
  containerType: string;

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

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

  /**
   * @generated from field: repeated soulfire.v1.InventorySlotSnapshot slots = 7;
   */
  slots: InventorySlotSnapshot[];

  /**
   * @generated from field: optional soulfire.v1.ItemStackSnapshot carried = 8;
   */
  carried?: ItemStackSnapshot | undefined;

  /**
   * @generated from field: int32 selected_hotbar_slot = 9;
   */
  selectedHotbarSlot: number;
};

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

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

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

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

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

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

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

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

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

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

  /**
   * @generated from field: repeated soulfire.v1.InventoryArea areas = 3;
   */
  areas: InventoryArea[];
};

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

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

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

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

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

  /**
   * @generated from field: repeated soulfire.v1.InventoryArea areas = 3;
   */
  areas: InventoryArea[];
};

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

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

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

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

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

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

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

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

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

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

  /**
   * @generated from field: repeated soulfire.v1.InventoryItemScoreFactor factors = 3;
   */
  factors: InventoryItemScoreFactor[];
};

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

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

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

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

  /**
   * @generated from field: repeated soulfire.v1.InventoryArea areas = 4;
   */
  areas: InventoryArea[];

  /**
   * Required when kind is TOOL.
   *
   * @generated from field: optional soulfire.v1.BlockPosition target_block = 5;
   */
  targetBlock?: BlockPosition | undefined;

  /**
   * Required when kind is ARMOR, such as "head", "chest", "legs", or "feet".
   *
   * @generated from field: optional string equipment_slot = 6;
   */
  equipmentSlot?: string | undefined;

  /**
   * Defaults to 10 and may not exceed 100.
   *
   * @generated from field: uint32 limit = 7;
   */
  limit: number;

  /**
   * Adds a small preference for already selectable hotbar items.
   *
   * @generated from field: bool prefer_hotbar = 8;
   */
  preferHotbar: boolean;

  /**
   * Adds a score bonus for each matching enchantment.
   *
   * @generated from field: repeated string preferred_enchantment_ids = 9;
   */
  preferredEnchantmentIds: string[];

  /**
   * Removes candidates carrying any listed enchantment.
   *
   * @generated from field: repeated string excluded_enchantment_ids = 10;
   */
  excludedEnchantmentIds: string[];

  /**
   * Prefers a higher remaining durability ratio for damageable items.
   *
   * @generated from field: bool prefer_high_durability = 11;
   */
  preferHighDurability: boolean;
};

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

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

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

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

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

  /**
   * @generated from field: int32 source_slot = 2;
   */
  sourceSlot: number;

  /**
   * @generated from field: int32 destination_slot = 3;
   */
  destinationSlot: number;

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

  /**
   * @generated from field: uint64 expected_revision = 5;
   */
  expectedRevision: bigint;

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

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

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

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

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

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

  /**
   * @generated from field: soulfire.v1.InventoryArea to = 5;
   */
  to: InventoryArea;

  /**
   * @generated from field: uint64 expected_revision = 6;
   */
  expectedRevision: bigint;

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

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

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

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

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

  /**
   * @generated from field: uint64 expected_revision = 4;
   */
  expectedRevision: bigint;

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

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

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

  /**
   * @generated from oneof soulfire.v1.SelectHotbarItemRequest.selection
   */
  selection: {
    /**
     * @generated from field: int32 hotbar_slot = 2;
     */
    value: number;
    case: "hotbarSlot";
  } | {
    /**
     * @generated from field: soulfire.v1.ItemSelector selector = 3;
     */
    value: ItemSelector;
    case: "selector";
  } | { case: undefined; value?: undefined };

  /**
   * @generated from field: uint64 expected_revision = 4;
   */
  expectedRevision: bigint;

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

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

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

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

  /**
   * @generated from field: string equipment_slot = 3;
   */
  equipmentSlot: string;

  /**
   * @generated from field: uint64 expected_revision = 4;
   */
  expectedRevision: bigint;

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

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

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

  /**
   * One of mainhand, offhand, head, chest, legs, or feet.
   *
   * @generated from field: string equipment_slot = 2;
   */
  equipmentSlot: string;

  /**
   * Optional preferred destination. MAIN, HOTBAR, and PLAYER are supported.
   * PLAYER selects the first available main-inventory or hotbar slot.
   *
   * @generated from field: optional soulfire.v1.InventoryArea destination_area = 3;
   */
  destinationArea?: InventoryArea | undefined;

  /**
   * @generated from field: uint64 expected_revision = 4;
   */
  expectedRevision: bigint;

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

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

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

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

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

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

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

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

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

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

  /**
   * @generated from field: int32 container_id = 2;
   */
  containerId: number;

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

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

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

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

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

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

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

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

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

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

  /**
   * Main inventory and hotbar together. Intended for semantic transfers.
   *
   * @generated from enum value: INVENTORY_AREA_PLAYER = 8;
   */
  PLAYER = 8,
}

/**
 * Describes the enum soulfire.v1.InventoryArea.
 */
export const InventoryAreaSchema: GenEnum<InventoryArea> = /*@__PURE__*/
  enumDesc(file_soulfire_inventory, 0);

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

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

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

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

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

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

/**
 * Describes the enum soulfire.v1.InventoryRecommendationKind.
 */
export const InventoryRecommendationKindSchema: GenEnum<InventoryRecommendationKind> = /*@__PURE__*/
  enumDesc(file_soulfire_inventory, 1);

/**
 * @generated from service soulfire.v1.InventoryService
 */
export const InventoryService: GenService<{
  /**
   * @generated from rpc soulfire.v1.InventoryService.GetContainerSnapshot
   */
  getContainerSnapshot: {
    methodKind: "unary";
    input: typeof GetContainerSnapshotRequestSchema;
    output: typeof GetContainerSnapshotResponseSchema;
  },
  /**
   * @generated from rpc soulfire.v1.InventoryService.CountItems
   */
  countItems: {
    methodKind: "unary";
    input: typeof CountItemsRequestSchema;
    output: typeof CountItemsResponseSchema;
  },
  /**
   * @generated from rpc soulfire.v1.InventoryService.FindInventorySlots
   */
  findInventorySlots: {
    methodKind: "unary";
    input: typeof FindInventorySlotsRequestSchema;
    output: typeof FindInventorySlotsResponseSchema;
  },
  /**
   * @generated from rpc soulfire.v1.InventoryService.RankInventoryItems
   */
  rankInventoryItems: {
    methodKind: "unary";
    input: typeof RankInventoryItemsRequestSchema;
    output: typeof RankInventoryItemsResponseSchema;
  },
  /**
   * @generated from rpc soulfire.v1.InventoryService.MoveInventoryItem
   */
  moveInventoryItem: {
    methodKind: "unary";
    input: typeof MoveInventoryItemRequestSchema;
    output: typeof InventoryMutationResponseSchema;
  },
  /**
   * @generated from rpc soulfire.v1.InventoryService.TransferItems
   */
  transferItems: {
    methodKind: "unary";
    input: typeof TransferItemsRequestSchema;
    output: typeof InventoryMutationResponseSchema;
  },
  /**
   * @generated from rpc soulfire.v1.InventoryService.TossItems
   */
  tossItems: {
    methodKind: "unary";
    input: typeof TossItemsRequestSchema;
    output: typeof InventoryMutationResponseSchema;
  },
  /**
   * @generated from rpc soulfire.v1.InventoryService.SelectHotbarItem
   */
  selectHotbarItem: {
    methodKind: "unary";
    input: typeof SelectHotbarItemRequestSchema;
    output: typeof InventoryMutationResponseSchema;
  },
  /**
   * @generated from rpc soulfire.v1.InventoryService.EquipItem
   */
  equipItem: {
    methodKind: "unary";
    input: typeof EquipItemRequestSchema;
    output: typeof InventoryMutationResponseSchema;
  },
  /**
   * @generated from rpc soulfire.v1.InventoryService.UnequipItem
   */
  unequipItem: {
    methodKind: "unary";
    input: typeof UnequipItemRequestSchema;
    output: typeof InventoryMutationResponseSchema;
  },
  /**
   * @generated from rpc soulfire.v1.InventoryService.OpenBlockContainer
   */
  openBlockContainer: {
    methodKind: "unary";
    input: typeof OpenBlockContainerRequestSchema;
    output: typeof InventoryMutationResponseSchema;
  },
  /**
   * @generated from rpc soulfire.v1.InventoryService.CloseSemanticContainer
   */
  closeSemanticContainer: {
    methodKind: "unary";
    input: typeof CloseSemanticContainerRequestSchema;
    output: typeof InventoryMutationResponseSchema;
  },
}> = /*@__PURE__*/
  serviceDesc(file_soulfire_inventory, 0);
