// Common shared types for the SoulFire gRPC API.
// This file contains message types, enums, and settings definitions that are shared
// across multiple services including instance management, authentication, proxy handling,
// user permissions, and UI configuration.

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

import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
import { file_soulfire_api_docs } from "./api_docs_pb.js";
import { file_google_api_field_behavior } from "../google/api/field_behavior_pb.js";
import type { Value } from "@bufbuild/protobuf/wkt";
import { file_google_protobuf_struct } from "@bufbuild/protobuf/wkt";
import type { JsonObject, Message } from "@bufbuild/protobuf";

/**
 * Describes the file soulfire/common.proto.
 */
export const file_soulfire_common: GenFile = /*@__PURE__*/
  fileDesc(" ", [file_soulfire_api_docs, file_google_api_field_behavior, file_google_protobuf_struct]);

/**
 * A block position in a specific dimension. Coordinates are Minecraft block
 * integers, not chunk-relative.
 *
 * @generated from message soulfire.v1.BlockPosition
 */
export type BlockPosition = Message<"soulfire.v1.BlockPosition"> & {
  /**
   * Block X coordinate. East is positive.
   *
   * @generated from field: int32 x = 1;
   */
  x: number;

  /**
   * Block Y coordinate. Vertical axis.
   *
   * @generated from field: int32 y = 2;
   */
  y: number;

  /**
   * Block Z coordinate. South is positive.
   *
   * @generated from field: int32 z = 3;
   */
  z: number;

  /**
   * Namespaced dimension id. If empty, APIs use the bot's current dimension.
   *
   * @generated from field: string dimension = 4;
   */
  dimension: string;
};

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

/**
 * A precise world position. Used for entity locations and pathfinding goals
 * where sub-block precision matters.
 *
 * @generated from message soulfire.v1.WorldPosition
 */
export type WorldPosition = Message<"soulfire.v1.WorldPosition"> & {
  /**
   * @generated from field: double x = 1;
   */
  x: number;

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

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

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

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

/**
 * Represents a network proxy configuration used for routing bot connections.
 * Proxies can be used to mask the origin of bot traffic or to distribute connections
 * across multiple IP addresses. Used in instance configuration and proxy checking services.
 *
 * @generated from message soulfire.v1.ProxyProto
 */
export type ProxyProto = Message<"soulfire.v1.ProxyProto"> & {
  /**
   * The proxy protocol type. Determines how the connection is established.
   *
   * @generated from field: soulfire.v1.ProxyProto.Type type = 1;
   */
  type: ProxyProto_Type;

  /**
   * The proxy server address in "host:port" format (e.g., "proxy.example.com:8080").
   * The address must be resolvable and the port must be valid (1-65535).
   *
   * @generated from field: string address = 2;
   */
  address: string;

  /**
   * Optional username for proxy authentication.
   * Required if the proxy server requires authentication.
   * If password is set, username must also be set.
   *
   * @generated from field: optional string username = 3;
   */
  username?: string | undefined;

  /**
   * Optional password for proxy authentication.
   * Used with username for SOCKS5 or HTTP proxy authentication.
   * Not supported for SOCKS4 proxies (will cause an error if set).
   *
   * @generated from field: optional string password = 4;
   */
  password?: string | undefined;
};

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

/**
 * The type of proxy protocol to use for the connection.
 *
 * @generated from enum soulfire.v1.ProxyProto.Type
 */
export enum ProxyProto_Type {
  /**
   * HTTP/HTTPS proxy using the CONNECT method.
   * Does not support UDP traffic. Suitable for basic HTTP tunneling.
   *
   * @generated from enum value: HTTP = 0;
   */
  HTTP = 0,

  /**
   * SOCKS4 proxy protocol.
   * Does not support UDP traffic or authentication passwords (username only via IDENT).
   * Note: If a password is provided for SOCKS4, it will be rejected.
   *
   * @generated from enum value: SOCKS4 = 1;
   */
  SOCKS4 = 1,

  /**
   * SOCKS5 proxy protocol.
   * Supports both TCP and UDP traffic, as well as full username/password authentication.
   * Recommended for most use cases due to its flexibility.
   *
   * @generated from enum value: SOCKS5 = 2;
   */
  SOCKS5 = 2,
}

/**
 * Describes the enum soulfire.v1.ProxyProto.Type.
 */
export const ProxyProto_TypeSchema: GenEnum<ProxyProto_Type> = /*@__PURE__*/
  enumDesc(file_soulfire_common, 2, 0);

/**
 * Represents an authenticated Minecraft account that can be used by bots.
 * This can be a Microsoft account (Java or Bedrock), TheAltening Java account,
 * raw Java access-token account, or offline account.
 * The account contains authentication data, profile information, and per-account settings.
 * Used throughout the system for instance configuration and bot management.
 *
 * @generated from message soulfire.v1.MinecraftAccountProto
 */
export type MinecraftAccountProto = Message<"soulfire.v1.MinecraftAccountProto"> & {
  /**
   * The authentication type used for this account.
   * Determines which account_data field is populated.
   *
   * @generated from field: soulfire.v1.MinecraftAccountProto.AccountTypeProto type = 1;
   */
  type: MinecraftAccountProto_AccountTypeProto;

  /**
   * The unique profile identifier (UUID) for this account.
   * For online accounts: The profile UUID returned by the authentication provider.
   * For offline accounts: A deterministic UUID derived from the username.
   * Format: Standard UUID string (e.g., "550e8400-e29b-41d4-a716-446655440000").
   *
   * @generated from field: string profile_id = 2;
   */
  profileId: string;

  /**
   * The last known username/gamertag for this account.
   * Updated during authentication and refresh operations.
   * For Java: The Minecraft username (up to 16 characters).
   * For Bedrock: The Xbox gamertag.
   *
   * @generated from field: string last_known_name = 3;
   */
  lastKnownName: string;

  /**
   * The platform-specific authentication data.
   * Exactly one of these fields will be set based on the account type.
   *
   * @generated from oneof soulfire.v1.MinecraftAccountProto.account_data
   */
  accountData: {
    /**
     * Authentication chain for online Java accounts (Microsoft-authenticated).
     *
     * @generated from field: soulfire.v1.MinecraftAccountProto.OnlineChainJavaData online_chain_java_data = 5;
     */
    value: MinecraftAccountProto_OnlineChainJavaData;
    case: "onlineChainJavaData";
  } | {
    /**
     * Data for offline Java accounts (no authentication required).
     *
     * @generated from field: soulfire.v1.MinecraftAccountProto.OfflineJavaData offline_java_data = 6;
     */
    value: MinecraftAccountProto_OfflineJavaData;
    case: "offlineJavaData";
  } | {
    /**
     * Authentication chain for Bedrock accounts (Microsoft-authenticated).
     *
     * @generated from field: soulfire.v1.MinecraftAccountProto.BedrockData bedrock_data = 7;
     */
    value: MinecraftAccountProto_BedrockData;
    case: "bedrockData";
  } | {
    /**
     * Data for Java accounts authenticated with a raw access token.
     *
     * @generated from field: soulfire.v1.MinecraftAccountProto.OnlineSimpleJavaData online_simple_java_data = 10;
     */
    value: MinecraftAccountProto_OnlineSimpleJavaData;
    case: "onlineSimpleJavaData";
  } | {
    /**
     * Data for Java accounts authenticated through TheAltening.
     *
     * @generated from field: soulfire.v1.MinecraftAccountProto.TheAlteningJavaData the_altening_java_data = 11;
     */
    value: MinecraftAccountProto_TheAlteningJavaData;
    case: "theAlteningJavaData";
  } | { case: undefined; value?: undefined };

  /**
   * Per-bot configuration settings stored with the account.
   * Organized as namespace -> key -> value mappings.
   * These settings override instance-level settings when the bot is running.
   * Typically includes bot-specific behavior settings.
   *
   * @generated from field: repeated soulfire.v1.SettingsNamespace config = 8;
   */
  config: SettingsNamespace[];

  /**
   * Persistent metadata stored with the account across sessions.
   * Organized as namespace -> key -> value mappings.
   * Used by plugins and the system to store account-specific state
   * that should persist across bot restarts (e.g., last position, inventory cache).
   *
   * @generated from field: repeated soulfire.v1.SettingsNamespace persistent_metadata = 9;
   */
  persistentMetadata: SettingsNamespace[];
};

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

/**
 * Authentication chain data for online Java Edition accounts.
 * Contains OAuth tokens, Minecraft profile data, and Xbox Live authentication details.
 * Used for Microsoft-authenticated Java accounts to maintain session state.
 *
 * @generated from message soulfire.v1.MinecraftAccountProto.OnlineChainJavaData
 */
export type MinecraftAccountProto_OnlineChainJavaData = Message<"soulfire.v1.MinecraftAccountProto.OnlineChainJavaData"> & {
  /**
   * JSON structure containing the complete authentication chain from minecraftauth library.
   * Includes Microsoft OAuth tokens, Xbox Live tokens, and Minecraft access tokens.
   * This data can be refreshed to obtain new tokens without re-authentication.
   *
   * @generated from field: google.protobuf.Struct auth_chain = 3;
   */
  authChain?: JsonObject | undefined;
};

/**
 * Describes the message soulfire.v1.MinecraftAccountProto.OnlineChainJavaData.
 * Use `create(MinecraftAccountProto_OnlineChainJavaDataSchema)` to create a new message.
 */
export const MinecraftAccountProto_OnlineChainJavaDataSchema: GenMessage<MinecraftAccountProto_OnlineChainJavaData> = /*@__PURE__*/
  messageDesc(file_soulfire_common, 3, 0);

/**
 * Account data for offline mode Java accounts.
 * Contains no authentication data since offline accounts don't require Microsoft auth.
 * The profile UUID is derived deterministically from the username.
 *
 * Empty message - offline accounts have no persistent auth data.
 * UUID is calculated as: UUID.nameUUIDFromBytes("OfflinePlayer:<username>")
 *
 * @generated from message soulfire.v1.MinecraftAccountProto.OfflineJavaData
 */
export type MinecraftAccountProto_OfflineJavaData = Message<"soulfire.v1.MinecraftAccountProto.OfflineJavaData"> & {
};

/**
 * Describes the message soulfire.v1.MinecraftAccountProto.OfflineJavaData.
 * Use `create(MinecraftAccountProto_OfflineJavaDataSchema)` to create a new message.
 */
export const MinecraftAccountProto_OfflineJavaDataSchema: GenMessage<MinecraftAccountProto_OfflineJavaData> = /*@__PURE__*/
  messageDesc(file_soulfire_common, 3, 1);

/**
 * Account data for Java Edition accounts authenticated with a raw access token.
 * Contains only the token and its expiry, without a full authentication chain.
 * Cannot be refreshed; used until the token expires.
 *
 * @generated from message soulfire.v1.MinecraftAccountProto.OnlineSimpleJavaData
 */
export type MinecraftAccountProto_OnlineSimpleJavaData = Message<"soulfire.v1.MinecraftAccountProto.OnlineSimpleJavaData"> & {
  /**
   * The raw Minecraft access token (JWT).
   *
   * @generated from field: string access_token = 1;
   */
  accessToken: string;

  /**
   * Token expiry time in milliseconds since epoch.
   *
   * @generated from field: int64 expire_time_ms = 2;
   */
  expireTimeMs: bigint;
};

/**
 * Describes the message soulfire.v1.MinecraftAccountProto.OnlineSimpleJavaData.
 * Use `create(MinecraftAccountProto_OnlineSimpleJavaDataSchema)` to create a new message.
 */
export const MinecraftAccountProto_OnlineSimpleJavaDataSchema: GenMessage<MinecraftAccountProto_OnlineSimpleJavaData> = /*@__PURE__*/
  messageDesc(file_soulfire_common, 3, 2);

/**
 * Account data for Java Edition accounts authenticated through TheAltening.
 * Stores the imported account token and the current Yggdrasil access token.
 *
 * @generated from message soulfire.v1.MinecraftAccountProto.TheAlteningJavaData
 */
export type MinecraftAccountProto_TheAlteningJavaData = Message<"soulfire.v1.MinecraftAccountProto.TheAlteningJavaData"> & {
  /**
   * The raw TheAltening account token used to authenticate and refresh this account.
   *
   * @generated from field: string account_token = 1;
   */
  accountToken: string;

  /**
   * The current Yggdrasil access token returned by TheAltening.
   *
   * @generated from field: string access_token = 2;
   */
  accessToken: string;
};

/**
 * Describes the message soulfire.v1.MinecraftAccountProto.TheAlteningJavaData.
 * Use `create(MinecraftAccountProto_TheAlteningJavaDataSchema)` to create a new message.
 */
export const MinecraftAccountProto_TheAlteningJavaDataSchema: GenMessage<MinecraftAccountProto_TheAlteningJavaData> = /*@__PURE__*/
  messageDesc(file_soulfire_common, 3, 3);

/**
 * Authentication chain data for Bedrock Edition accounts.
 * Contains Xbox Live and Bedrock-specific authentication details.
 * Used for Microsoft-authenticated Bedrock accounts.
 *
 * @generated from message soulfire.v1.MinecraftAccountProto.BedrockData
 */
export type MinecraftAccountProto_BedrockData = Message<"soulfire.v1.MinecraftAccountProto.BedrockData"> & {
  /**
   * JSON structure containing the complete Bedrock authentication chain.
   * Includes Xbox Live tokens and Bedrock-specific session data.
   * Compatible with the ViaBedrock protocol implementation.
   *
   * @generated from field: google.protobuf.Struct auth_chain = 7;
   */
  authChain?: JsonObject | undefined;
};

/**
 * Describes the message soulfire.v1.MinecraftAccountProto.BedrockData.
 * Use `create(MinecraftAccountProto_BedrockDataSchema)` to create a new message.
 */
export const MinecraftAccountProto_BedrockDataSchema: GenMessage<MinecraftAccountProto_BedrockData> = /*@__PURE__*/
  messageDesc(file_soulfire_common, 3, 4);

/**
 * The type of authentication that was used to create this account.
 * Determines which account_data oneof field is populated and how the account
 * can be refreshed or re-authenticated.
 *
 * @generated from enum soulfire.v1.MinecraftAccountProto.AccountTypeProto
 */
export enum MinecraftAccountProto_AccountTypeProto {
  /**
   * Authenticated via Microsoft Java credentials (email/password).
   * Account data stored in OnlineChainJavaData.
   *
   * @generated from enum value: MICROSOFT_JAVA_CREDENTIALS = 0;
   */
  MICROSOFT_JAVA_CREDENTIALS = 0,

  /**
   * Authenticated via Microsoft Bedrock credentials (email/password).
   * Account data stored in BedrockData.
   *
   * @generated from enum value: MICROSOFT_BEDROCK_CREDENTIALS = 1;
   */
  MICROSOFT_BEDROCK_CREDENTIALS = 1,

  /**
   * Offline mode account (no Microsoft authentication).
   * Account data stored in OfflineJavaData.
   * UUID is derived from username, cannot join online-mode servers.
   *
   * @generated from enum value: OFFLINE = 4;
   */
  OFFLINE = 4,

  /**
   * Authenticated via Microsoft Java device code flow.
   * Account data stored in OnlineChainJavaData.
   *
   * @generated from enum value: MICROSOFT_JAVA_DEVICE_CODE = 5;
   */
  MICROSOFT_JAVA_DEVICE_CODE = 5,

  /**
   * Authenticated via Microsoft Bedrock device code flow.
   * Account data stored in BedrockData.
   *
   * @generated from enum value: MICROSOFT_BEDROCK_DEVICE_CODE = 6;
   */
  MICROSOFT_BEDROCK_DEVICE_CODE = 6,

  /**
   * Authenticated via Microsoft Java refresh token.
   * Account data stored in OnlineChainJavaData.
   *
   * @generated from enum value: MICROSOFT_JAVA_REFRESH_TOKEN = 7;
   */
  MICROSOFT_JAVA_REFRESH_TOKEN = 7,

  /**
   * Authenticated via Microsoft Java browser cookies.
   * Account data stored in OnlineChainJavaData.
   *
   * @generated from enum value: MICROSOFT_JAVA_COOKIES = 8;
   */
  MICROSOFT_JAVA_COOKIES = 8,

  /**
   * Authenticated via raw Minecraft Java access token.
   * Account data stored in OnlineSimpleJavaData.
   *
   * @generated from enum value: MICROSOFT_JAVA_ACCESS_TOKEN = 9;
   */
  MICROSOFT_JAVA_ACCESS_TOKEN = 9,

  /**
   * Authenticated via TheAltening account token.
   * Account data stored in TheAlteningJavaData.
   *
   * @generated from enum value: THE_ALTENING = 10;
   */
  THE_ALTENING = 10,
}

/**
 * Describes the enum soulfire.v1.MinecraftAccountProto.AccountTypeProto.
 */
export const MinecraftAccountProto_AccountTypeProtoSchema: GenEnum<MinecraftAccountProto_AccountTypeProto> = /*@__PURE__*/
  enumDesc(file_soulfire_common, 3, 0);

/**
 * A collection of settings entries grouped under a common namespace.
 * Used to organize configuration values hierarchically, where each namespace
 * represents a logical grouping (e.g., plugin name, feature area).
 * Part of the instance configuration, server configuration, and account settings.
 *
 * @generated from message soulfire.v1.SettingsNamespace
 */
export type SettingsNamespace = Message<"soulfire.v1.SettingsNamespace"> & {
  /**
   * The namespace identifier that groups related settings together.
   * Typically matches a plugin ID or internal system component name.
   * Examples: "bot", "account", "auto-reconnect", "anti-afk".
   *
   * @generated from field: string namespace = 1;
   */
  namespace: string;

  /**
   * The list of setting entries within this namespace.
   * Each entry has a unique key within the namespace.
   *
   * @generated from field: repeated soulfire.v1.SettingsNamespace.SettingsEntry entries = 2;
   */
  entries: SettingsNamespace_SettingsEntry[];
};

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

/**
 * A single key-value setting entry within a namespace.
 *
 * @generated from message soulfire.v1.SettingsNamespace.SettingsEntry
 */
export type SettingsNamespace_SettingsEntry = Message<"soulfire.v1.SettingsNamespace.SettingsEntry"> & {
  /**
   * The unique key identifying this setting within its namespace.
   * Should be a valid identifier (alphanumeric with underscores/dashes).
   *
   * @generated from field: string key = 1;
   */
  key: string;

  /**
   * The value of this setting as a protobuf Value.
   * Can be a string, number, boolean, list, or nested object.
   * The expected type depends on the setting definition (see SettingsDefinition).
   *
   * @generated from field: google.protobuf.Value value = 2;
   */
  value?: Value | undefined;
};

/**
 * Describes the message soulfire.v1.SettingsNamespace.SettingsEntry.
 * Use `create(SettingsNamespace_SettingsEntrySchema)` to create a new message.
 */
export const SettingsNamespace_SettingsEntrySchema: GenMessage<SettingsNamespace_SettingsEntry> = /*@__PURE__*/
  messageDesc(file_soulfire_common, 4, 0);

/**
 * Uniquely identifies a single setting entry by its namespace and key.
 * Used to reference settings in page definitions and for granular updates.
 * The combination of namespace + key must be unique within a configuration scope.
 *
 * @generated from message soulfire.v1.SettingsEntryIdentifier
 */
export type SettingsEntryIdentifier = Message<"soulfire.v1.SettingsEntryIdentifier"> & {
  /**
   * The namespace containing this setting.
   * Must match a namespace from a registered SettingsNamespace.
   *
   * @generated from field: string namespace = 1;
   */
  namespace: string;

  /**
   * The key of the setting within its namespace.
   * Must match a key from a SettingsEntry in the corresponding namespace.
   *
   * @generated from field: string key = 2;
   */
  key: string;
};

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

/**
 * UI definition for a string/text setting.
 * Used to render text input fields in the client UI with appropriate validation
 * and visual styling based on the input type.
 *
 * @generated from message soulfire.v1.StringSetting
 */
export type StringSetting = Message<"soulfire.v1.StringSetting"> & {
  /**
   * The display name shown in the UI label for this setting.
   *
   * @generated from field: string ui_name = 1;
   */
  uiName: string;

  /**
   * A longer description explaining what this setting does.
   * Typically shown as a tooltip or help text.
   *
   * @generated from field: string description = 2;
   */
  description: string;

  /**
   * The default value used when no value is configured.
   *
   * @generated from field: string def = 3;
   */
  def: string;

  /**
   * The type of input field to render (affects keyboard, validation, and display).
   *
   * @generated from field: soulfire.v1.StringSetting.InputType input_type = 10;
   */
  inputType: StringSetting_InputType;

  /**
   * Placeholder text shown when the input is empty.
   * Provides a hint about expected format or content.
   *
   * @generated from field: string placeholder = 6;
   */
  placeholder: string;

  /**
   * Minimum required string length (0 means no minimum).
   *
   * @generated from field: int32 min_length = 7;
   */
  minLength: number;

  /**
   * Maximum allowed string length (0 means no maximum).
   *
   * @generated from field: int32 max_length = 8;
   */
  maxLength: number;

  /**
   * Regular expression pattern for value validation.
   * Empty string means no pattern validation.
   *
   * @generated from field: string pattern = 9;
   */
  pattern: string;

  /**
   * Whether this setting is disabled (read-only) in the UI.
   * Disabled settings display their value but cannot be modified.
   *
   * @generated from field: bool disabled = 11;
   */
  disabled: boolean;
};

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

/**
 * The type of text input to render in the UI.
 * Maps to HTML input types for appropriate keyboard and validation behavior.
 *
 * @generated from enum soulfire.v1.StringSetting.InputType
 */
export enum StringSetting_InputType {
  /**
   * Standard single-line text input.
   *
   * @generated from enum value: TEXT = 0;
   */
  TEXT = 0,

  /**
   * Password input with masked characters.
   * Value is hidden in the UI for security.
   *
   * @generated from enum value: PASSWORD = 1;
   */
  PASSWORD = 1,

  /**
   * Email address input with email validation.
   *
   * @generated from enum value: EMAIL = 2;
   */
  EMAIL = 2,

  /**
   * Search input, typically with a search icon and clear button.
   *
   * @generated from enum value: SEARCH = 3;
   */
  SEARCH = 3,

  /**
   * Telephone number input with numeric keyboard on mobile.
   *
   * @generated from enum value: TEL = 4;
   */
  TEL = 4,

  /**
   * URL input with URL validation.
   *
   * @generated from enum value: URL = 5;
   */
  URL = 5,

  /**
   * Multi-line text area for longer text content.
   *
   * @generated from enum value: TEXTAREA = 6;
   */
  TEXTAREA = 6,
}

/**
 * Describes the enum soulfire.v1.StringSetting.InputType.
 */
export const StringSetting_InputTypeSchema: GenEnum<StringSetting_InputType> = /*@__PURE__*/
  enumDesc(file_soulfire_common, 6, 0);

/**
 * UI definition for an integer number setting.
 * Used to render numeric input fields with validation constraints.
 * Supports range limits, step increments, and locale-aware formatting.
 *
 * @generated from message soulfire.v1.IntSetting
 */
export type IntSetting = Message<"soulfire.v1.IntSetting"> & {
  /**
   * The display name shown in the UI label for this setting.
   *
   * @generated from field: string ui_name = 1;
   */
  uiName: string;

  /**
   * A longer description explaining what this setting does.
   *
   * @generated from field: string description = 2;
   */
  description: string;

  /**
   * The default value used when no value is configured.
   *
   * @generated from field: int32 def = 3;
   */
  def: number;

  /**
   * The minimum allowed value (inclusive).
   *
   * @generated from field: int32 min = 4;
   */
  min: number;

  /**
   * The maximum allowed value (inclusive).
   *
   * @generated from field: int32 max = 5;
   */
  max: number;

  /**
   * The step increment for value adjustments (e.g., for spinbox controls).
   * A value of 0 means any integer is valid within the min/max range.
   *
   * @generated from field: int32 step = 6;
   */
  step: number;

  /**
   * Placeholder text shown when the input is empty.
   *
   * @generated from field: string placeholder = 7;
   */
  placeholder: string;

  /**
   * Whether to display the number with thousand separators (e.g., 1,000,000).
   * Improves readability for large numbers.
   *
   * @generated from field: bool thousand_separator = 8;
   */
  thousandSeparator: boolean;

  /**
   * Whether this setting is disabled (read-only) in the UI.
   *
   * @generated from field: bool disabled = 9;
   */
  disabled: boolean;
};

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

/**
 * UI definition for a floating-point number setting.
 * Used to render decimal number input fields with precision control.
 * Supports range limits, step increments, and decimal formatting options.
 *
 * @generated from message soulfire.v1.DoubleSetting
 */
export type DoubleSetting = Message<"soulfire.v1.DoubleSetting"> & {
  /**
   * The display name shown in the UI label for this setting.
   *
   * @generated from field: string ui_name = 1;
   */
  uiName: string;

  /**
   * A longer description explaining what this setting does.
   *
   * @generated from field: string description = 2;
   */
  description: string;

  /**
   * The default value used when no value is configured.
   *
   * @generated from field: double def = 3;
   */
  def: number;

  /**
   * The minimum allowed value (inclusive).
   *
   * @generated from field: double min = 4;
   */
  min: number;

  /**
   * The maximum allowed value (inclusive).
   *
   * @generated from field: double max = 5;
   */
  max: number;

  /**
   * The step increment for value adjustments.
   * A value of 0 means any decimal is valid within the min/max range.
   *
   * @generated from field: double step = 6;
   */
  step: number;

  /**
   * Placeholder text shown when the input is empty.
   *
   * @generated from field: string placeholder = 7;
   */
  placeholder: string;

  /**
   * Whether to display the integer part with thousand separators.
   *
   * @generated from field: bool thousand_separator = 8;
   */
  thousandSeparator: boolean;

  /**
   * The number of decimal places to display/allow.
   * Used for formatting and input validation.
   *
   * @generated from field: int32 decimal_scale = 9;
   */
  decimalScale: number;

  /**
   * Whether to always show the exact number of decimal places specified by decimal_scale.
   * If true, trailing zeros are preserved (e.g., 1.50 instead of 1.5).
   *
   * @generated from field: bool fixed_decimal_scale = 10;
   */
  fixedDecimalScale: boolean;

  /**
   * Whether this setting is disabled (read-only) in the UI.
   *
   * @generated from field: bool disabled = 11;
   */
  disabled: boolean;
};

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

/**
 * UI definition for a boolean toggle setting.
 * Used to render checkbox or toggle switch controls in the UI.
 * Commonly used for enabling/disabling features.
 *
 * @generated from message soulfire.v1.BoolSetting
 */
export type BoolSetting = Message<"soulfire.v1.BoolSetting"> & {
  /**
   * The display name shown in the UI label for this setting.
   *
   * @generated from field: string ui_name = 1;
   */
  uiName: string;

  /**
   * A longer description explaining what this setting does.
   *
   * @generated from field: string description = 2;
   */
  description: string;

  /**
   * The default value used when no value is configured.
   *
   * @generated from field: bool def = 3;
   */
  def: boolean;

  /**
   * Whether this setting is disabled (read-only) in the UI.
   *
   * @generated from field: bool disabled = 4;
   */
  disabled: boolean;
};

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

/**
 * UI definition for a dropdown/select setting with predefined options.
 * Used to render combo boxes or dropdown menus where users select from a fixed list.
 * Each option has an ID (stored value) and a display name (shown to user).
 *
 * @generated from message soulfire.v1.ComboSetting
 */
export type ComboSetting = Message<"soulfire.v1.ComboSetting"> & {
  /**
   * The display name shown in the UI label for this setting.
   *
   * @generated from field: string ui_name = 1;
   */
  uiName: string;

  /**
   * A longer description explaining what this setting does.
   *
   * @generated from field: string description = 2;
   */
  description: string;

  /**
   * The list of available options to choose from.
   * The order determines display order in the dropdown.
   *
   * @generated from field: repeated soulfire.v1.ComboSetting.Option options = 3;
   */
  options: ComboSetting_Option[];

  /**
   * The default option ID used when no value is configured.
   * Must match one of the option IDs in the options list.
   *
   * @generated from field: string def = 4;
   */
  def: string;

  /**
   * Whether this setting is disabled (read-only) in the UI.
   *
   * @generated from field: bool disabled = 5;
   */
  disabled: boolean;
};

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

/**
 * A single selectable option in the combo box.
 *
 * @generated from message soulfire.v1.ComboSetting.Option
 */
export type ComboSetting_Option = Message<"soulfire.v1.ComboSetting.Option"> & {
  /**
   * The internal identifier for this option.
   * This value is stored in the configuration when selected.
   * Typically a machine-readable string (e.g., enum name, UUID).
   *
   * @generated from field: string id = 1;
   */
  id: string;

  /**
   * The human-readable name displayed to the user.
   * Can include spaces and special characters for readability.
   *
   * @generated from field: string display_name = 2;
   */
  displayName: string;

  /**
   * Optional icon identifier to display next to the option.
   * Uses lucide.dev icon IDs (e.g., "user", "settings", "shield").
   *
   * @generated from field: optional string icon_id = 3;
   */
  iconId?: string | undefined;

  /**
   * Additional keywords for filtering/searching options.
   * Allows finding this option by typing related terms.
   *
   * @generated from field: repeated string keywords = 4;
   */
  keywords: string[];
};

/**
 * Describes the message soulfire.v1.ComboSetting.Option.
 * Use `create(ComboSetting_OptionSchema)` to create a new message.
 */
export const ComboSetting_OptionSchema: GenMessage<ComboSetting_Option> = /*@__PURE__*/
  messageDesc(file_soulfire_common, 10, 0);

/**
 * UI definition for a list of strings setting.
 * Used to render a multi-value input where users can add/remove string items.
 * Commonly used for lists of allowed values, server addresses, or tags.
 *
 * @generated from message soulfire.v1.StringListSetting
 */
export type StringListSetting = Message<"soulfire.v1.StringListSetting"> & {
  /**
   * The display name shown in the UI label for this setting.
   *
   * @generated from field: string ui_name = 1;
   */
  uiName: string;

  /**
   * A longer description explaining what this setting does.
   *
   * @generated from field: string description = 2;
   */
  description: string;

  /**
   * The default list of values used when no value is configured.
   * Can be empty for an initially empty list.
   *
   * @generated from field: repeated string def = 3;
   */
  def: string[];

  /**
   * Whether this setting is disabled (read-only) in the UI.
   *
   * @generated from field: bool disabled = 4;
   */
  disabled: boolean;
};

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

/**
 * UI definition for a min/max range setting with two integer values.
 * Used to render paired input fields for specifying a numeric range.
 * Commonly used for delay ranges, count ranges, or any min/max pair.
 * Values are stored as a JSON object with "min" and "max" properties.
 *
 * @generated from message soulfire.v1.MinMaxSetting
 */
export type MinMaxSetting = Message<"soulfire.v1.MinMaxSetting"> & {
  /**
   * The minimum allowed value for both entries (inclusive).
   * Both min and max entries must be >= this value.
   *
   * @generated from field: int32 min = 1;
   */
  min: number;

  /**
   * The maximum allowed value for both entries (inclusive).
   * Both min and max entries must be <= this value.
   *
   * @generated from field: int32 max = 2;
   */
  max: number;

  /**
   * The step increment for value adjustments.
   *
   * @generated from field: int32 step = 3;
   */
  step: number;

  /**
   * Whether to display numbers with thousand separators.
   *
   * @generated from field: bool thousand_separator = 4;
   */
  thousandSeparator: boolean;

  /**
   * Configuration for the minimum value input field.
   * The actual value must be <= maxEntry value.
   *
   * @generated from field: soulfire.v1.MinMaxSetting.Entry minEntry = 5;
   */
  minEntry?: MinMaxSetting_Entry | undefined;

  /**
   * Configuration for the maximum value input field.
   * The actual value must be >= minEntry value.
   *
   * @generated from field: soulfire.v1.MinMaxSetting.Entry maxEntry = 6;
   */
  maxEntry?: MinMaxSetting_Entry | undefined;

  /**
   * Whether this setting is disabled (read-only) in the UI.
   *
   * @generated from field: bool disabled = 7;
   */
  disabled: boolean;
};

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

/**
 * Configuration for a single entry in the min/max pair.
 *
 * @generated from message soulfire.v1.MinMaxSetting.Entry
 */
export type MinMaxSetting_Entry = Message<"soulfire.v1.MinMaxSetting.Entry"> & {
  /**
   * The display name for this entry (e.g., "Minimum Delay").
   *
   * @generated from field: string ui_name = 1;
   */
  uiName: string;

  /**
   * A description explaining what this entry represents.
   *
   * @generated from field: string description = 2;
   */
  description: string;

  /**
   * The default value for this entry.
   *
   * @generated from field: int32 def = 3;
   */
  def: number;

  /**
   * Placeholder text shown when the input is empty.
   *
   * @generated from field: string placeholder = 4;
   */
  placeholder: string;
};

/**
 * Describes the message soulfire.v1.MinMaxSetting.Entry.
 * Use `create(MinMaxSetting_EntrySchema)` to create a new message.
 */
export const MinMaxSetting_EntrySchema: GenMessage<MinMaxSetting_Entry> = /*@__PURE__*/
  messageDesc(file_soulfire_common, 12, 0);

/**
 * A complete setting definition that describes a single configurable value.
 * Contains all information needed for a client to render the setting UI,
 * validate input, and store/retrieve values by identifier.
 * Definitions are exported from the server and referenced by SettingsPage.
 *
 * @generated from message soulfire.v1.SettingsDefinition
 */
export type SettingsDefinition = Message<"soulfire.v1.SettingsDefinition"> & {
  /**
   * Unique identifier for this setting (namespace + key).
   * Used to reference this setting from pages and to store/retrieve values.
   *
   * @generated from field: soulfire.v1.SettingsEntryIdentifier id = 1;
   */
  id?: SettingsEntryIdentifier | undefined;

  /**
   * The configuration scope where this setting applies (SERVER, INSTANCE, BOT).
   * Determines where values are stored and how they cascade.
   *
   * @generated from field: soulfire.v1.SettingsPageEntryScopeType scope = 2;
   */
  scope: SettingsPageEntryScopeType;

  /**
   * The setting type and its UI configuration.
   * Exactly one of these fields will be set based on the setting's data type.
   *
   * @generated from oneof soulfire.v1.SettingsDefinition.type
   */
  type: {
    /**
     * String/text setting with optional validation.
     *
     * @generated from field: soulfire.v1.StringSetting string = 3;
     */
    value: StringSetting;
    case: "string";
  } | {
    /**
     * Integer number setting with range constraints.
     *
     * @generated from field: soulfire.v1.IntSetting int = 4;
     */
    value: IntSetting;
    case: "int";
  } | {
    /**
     * Floating-point number setting with precision control.
     *
     * @generated from field: soulfire.v1.DoubleSetting double = 5;
     */
    value: DoubleSetting;
    case: "double";
  } | {
    /**
     * Boolean toggle setting.
     *
     * @generated from field: soulfire.v1.BoolSetting bool = 6;
     */
    value: BoolSetting;
    case: "bool";
  } | {
    /**
     * Dropdown/select setting with predefined options.
     *
     * @generated from field: soulfire.v1.ComboSetting combo = 7;
     */
    value: ComboSetting;
    case: "combo";
  } | {
    /**
     * List of strings setting for multi-value input.
     *
     * @generated from field: soulfire.v1.StringListSetting string_list = 8;
     */
    value: StringListSetting;
    case: "stringList";
  } | {
    /**
     * Min/max range setting with two paired integer values.
     *
     * @generated from field: soulfire.v1.MinMaxSetting min_max = 9;
     */
    value: MinMaxSetting;
    case: "minMax";
  } | { case: undefined; value?: undefined };
};

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

/**
 * A settings page that groups related settings together for UI navigation.
 * Pages provide a logical organization of settings with visual elements like
 * icons and names. Each page references settings by their identifiers rather
 * than embedding the definitions, allowing settings to be shared across pages.
 *
 * @generated from message soulfire.v1.SettingsPage
 */
export type SettingsPage = Message<"soulfire.v1.SettingsPage"> & {
  /**
   * Unique page identifier, URL-safe for navigation.
   * Examples: "bot", "account", "auto-reconnect", "anti-afk".
   * Should be lowercase with hyphens for word separation.
   *
   * @generated from field: string id = 1;
   */
  id: string;

  /**
   * The ID of the plugin that owns this page (optional).
   * Null/empty for internal SoulFire pages.
   * Used to group pages by plugin in the UI navigation.
   *
   * @generated from field: optional string owning_plugin_id = 2;
   */
  owningPluginId?: string | undefined;

  /**
   * The human-readable display name shown in the UI navigation.
   * Examples: "Bot Settings", "Account", "Auto Reconnect".
   *
   * @generated from field: string page_name = 3;
   */
  pageName: string;

  /**
   * Ordered list of setting identifiers to display on this page.
   * Settings are rendered in the order they appear in this list.
   * Each identifier must correspond to a valid SettingsDefinition.
   *
   * @generated from field: repeated soulfire.v1.SettingsEntryIdentifier entries = 5;
   */
  entries: SettingsEntryIdentifier[];

  /**
   * Icon identifier for visual representation of this page.
   * Uses lucide.dev icon IDs (e.g., "bot", "user", "refresh-cw").
   * Rendered next to the page name in navigation menus.
   *
   * @generated from field: string icon_id = 6;
   */
  iconId: string;

  /**
   * Optional identifier for a boolean setting that controls whether
   * this page/feature is enabled. Used primarily for plugin pages.
   * When set, the page may show an enable/disable toggle.
   *
   * @generated from field: optional soulfire.v1.SettingsEntryIdentifier enabled_identifier = 7;
   */
  enabledIdentifier?: SettingsEntryIdentifier | undefined;
};

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

/**
 * Metadata about a registered server plugin.
 * Plugins extend SoulFire functionality by adding new settings, commands,
 * and bot behaviors. This information is displayed in the client UI.
 * Returned as part of InstanceInfo and ServerInfoResponse.
 *
 * @generated from message soulfire.v1.ServerPlugin
 */
export type ServerPlugin = Message<"soulfire.v1.ServerPlugin"> & {
  /**
   * The unique plugin identifier.
   * Should be a lowercase, hyphenated string (e.g., "auto-reconnect", "chat-control").
   * Used to reference the plugin in owning_plugin_id fields.
   *
   * @generated from field: string id = 1;
   */
  id: string;

  /**
   * The semantic version of the plugin (e.g., "1.0.0", "2.1.3-beta").
   * Follows semver conventions for compatibility tracking.
   *
   * @generated from field: string version = 2;
   */
  version: string;

  /**
   * A brief description of what the plugin does.
   * Shown in plugin lists and information panels.
   *
   * @generated from field: string description = 3;
   */
  description: string;

  /**
   * The author or organization that created the plugin.
   * Typically a name or organization identifier.
   *
   * @generated from field: string author = 4;
   */
  author: string;

  /**
   * The software license under which the plugin is distributed.
   * Examples: "MIT", "Apache-2.0", "GPL-3.0".
   *
   * @generated from field: string license = 5;
   */
  license: string;

  /**
   * URL to the plugin's website, documentation, or repository.
   * Allows users to find more information or report issues.
   *
   * @generated from field: string website = 6;
   */
  website: string;
};

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

/**
 * Authentication service types that accept direct credentials (email/password or username).
 * Used in the MCAuthService.LoginCredentials RPC to specify which authentication
 * method should be used for batch account authentication.
 *
 * @generated from enum soulfire.v1.AccountTypeCredentials
 */
export enum AccountTypeCredentials {
  /**
   * Microsoft Java Edition authentication using email and password.
   * Authenticates against Microsoft's OAuth system to obtain a Minecraft Java profile.
   * Payload format: ["email", "password"] pairs, one pair per account.
   *
   * @generated from enum value: MICROSOFT_JAVA_CREDENTIALS = 0;
   */
  MICROSOFT_JAVA_CREDENTIALS = 0,

  /**
   * Microsoft Bedrock Edition authentication using email and password.
   * Authenticates against Microsoft's OAuth system to obtain a Minecraft Bedrock profile.
   * Payload format: ["email", "password"] pairs, one pair per account.
   *
   * @generated from enum value: MICROSOFT_BEDROCK_CREDENTIALS = 1;
   */
  MICROSOFT_BEDROCK_CREDENTIALS = 1,

  /**
   * Offline mode authentication (no Microsoft account required).
   * Creates a local-only account with a generated UUID based on the username.
   * Payload format: ["username"] for each account.
   * Note: Offline accounts cannot join online-mode servers.
   *
   * @generated from enum value: OFFLINE = 4;
   */
  OFFLINE = 4,

  /**
   * Microsoft Java Edition authentication using an existing refresh token.
   * Useful for re-authenticating accounts without requiring credentials again.
   * Payload format: ["refresh_token"] for each account.
   *
   * @generated from enum value: MICROSOFT_JAVA_REFRESH_TOKEN = 5;
   */
  MICROSOFT_JAVA_REFRESH_TOKEN = 5,

  /**
   * Microsoft Java Edition authentication using browser cookies from login.live.com.
   * Exchanges cookies for a refresh token, then authenticates normally.
   * Payload format: cookie string (Netscape jar, Cookie Editor JSON, or raw header).
   *
   * @generated from enum value: MICROSOFT_JAVA_COOKIES = 6;
   */
  MICROSOFT_JAVA_COOKIES = 6,

  /**
   * Microsoft Java Edition authentication using a raw Minecraft access token.
   * The token is validated by fetching the profile from Mojang's API.
   * Cannot be refreshed; used until expiry.
   * Payload format: raw JWT access token string.
   *
   * @generated from enum value: MICROSOFT_JAVA_ACCESS_TOKEN = 7;
   */
  MICROSOFT_JAVA_ACCESS_TOKEN = 7,

  /**
   * TheAltening Java Edition authentication using a generated account token.
   * Authenticates against TheAltening's Yggdrasil-compatible auth server.
   * Payload format: raw TheAltening account token string.
   *
   * @generated from enum value: THE_ALTENING = 8;
   */
  THE_ALTENING = 8,
}

/**
 * Describes the enum soulfire.v1.AccountTypeCredentials.
 */
export const AccountTypeCredentialsSchema: GenEnum<AccountTypeCredentials> = /*@__PURE__*/
  enumDesc(file_soulfire_common, 0);

/**
 * Authentication service types that use the OAuth 2.0 Device Code flow.
 * Used in the MCAuthService.LoginDeviceCode RPC for interactive authentication
 * where the user must visit a URL and enter a code on another device.
 *
 * @generated from enum soulfire.v1.AccountTypeDeviceCode
 */
export enum AccountTypeDeviceCode {
  /**
   * Microsoft Java Edition authentication via device code flow.
   * Returns a device code that the user enters at microsoft.com/link.
   * Produces an OnlineChainJavaData authentication chain upon success.
   *
   * @generated from enum value: MICROSOFT_JAVA_DEVICE_CODE = 0;
   */
  MICROSOFT_JAVA_DEVICE_CODE = 0,

  /**
   * Microsoft Bedrock Edition authentication via device code flow.
   * Returns a device code that the user enters at microsoft.com/link.
   * Produces a BedrockData authentication chain upon success.
   *
   * @generated from enum value: MICROSOFT_BEDROCK_DEVICE_CODE = 1;
   */
  MICROSOFT_BEDROCK_DEVICE_CODE = 1,
}

/**
 * Describes the enum soulfire.v1.AccountTypeDeviceCode.
 */
export const AccountTypeDeviceCodeSchema: GenEnum<AccountTypeDeviceCode> = /*@__PURE__*/
  enumDesc(file_soulfire_common, 1);

/**
 * Server-wide permissions that apply globally across all instances.
 * These permissions control access to server administration, user management,
 * and self-service operations. Checked via the PermissionContext.global() method.
 * ADMIN role users have all global permissions by default.
 *
 * @generated from enum soulfire.v1.GlobalPermission
 */
export enum GlobalPermission {
  /**
   * Permission to create new SoulFire instances.
   * Required by InstanceService.CreateInstance RPC.
   *
   * @generated from enum value: CREATE_INSTANCE = 0;
   */
  CREATE_INSTANCE = 0,

  /**
   * Permission to subscribe to server-wide log streams.
   * Allows receiving logs from all instances and system components.
   *
   * @generated from enum value: GLOBAL_SUBSCRIBE_LOGS = 1;
   */
  GLOBAL_SUBSCRIBE_LOGS = 1,

  /**
   * Permission to read the authenticated user's own client data.
   * Required by ClientService.GetClientData RPC.
   * Returns user profile, permissions, and server information.
   *
   * @generated from enum value: READ_CLIENT_DATA = 2;
   */
  READ_CLIENT_DATA = 2,

  /**
   * Permission to read the server configuration.
   * Required by ServerService.GetServerInfo RPC.
   *
   * @generated from enum value: READ_SERVER_CONFIG = 3;
   */
  READ_SERVER_CONFIG = 3,

  /**
   * Permission to modify the server configuration.
   * Required by ServerService.UpdateServerConfig and UpdateServerConfigEntry RPCs.
   *
   * @generated from enum value: UPDATE_SERVER_CONFIG = 4;
   */
  UPDATE_SERVER_CONFIG = 4,

  /**
   * Permission to create new user accounts.
   * Required by UserService.CreateUser RPC.
   *
   * @generated from enum value: CREATE_USER = 5;
   */
  CREATE_USER = 5,

  /**
   * Permission to read information about other users.
   * Required by UserService.ListUsers and GetUserInfo RPCs.
   *
   * @generated from enum value: READ_USER = 6;
   */
  READ_USER = 6,

  /**
   * Permission to modify other users' accounts.
   * Required by UserService.UpdateUser RPC.
   *
   * @generated from enum value: UPDATE_USER = 7;
   */
  UPDATE_USER = 7,

  /**
   * Permission to delete user accounts.
   * Required by UserService.DeleteUser RPC.
   *
   * @generated from enum value: DELETE_USER = 8;
   */
  DELETE_USER = 8,

  /**
   * Permission to execute commands at the global/server level.
   * Required by CommandService for server-wide command execution.
   *
   * @generated from enum value: GLOBAL_COMMAND_EXECUTION = 9;
   */
  GLOBAL_COMMAND_EXECUTION = 9,

  /**
   * Permission to invalidate sessions for other users.
   * Required by UserService.InvalidateSessions RPC.
   * Forces other users to re-authenticate.
   *
   * @generated from enum value: INVALIDATE_SESSIONS = 11;
   */
  INVALIDATE_SESSIONS = 11,

  /**
   * Permission to generate a WebDAV authentication token for oneself.
   * Required by ClientService.GenerateWebDAVToken RPC.
   * WebDAV tokens provide file system access to instance data.
   *
   * @generated from enum value: GENERATE_SELF_WEBDAV_TOKEN = 12;
   */
  GENERATE_SELF_WEBDAV_TOKEN = 12,

  /**
   * Permission to generate an API token for oneself.
   * Required by ClientService.GenerateAPIToken RPC.
   * API tokens can be used for programmatic access.
   *
   * @generated from enum value: GENERATE_SELF_API_TOKEN = 15;
   */
  GENERATE_SELF_API_TOKEN = 15,

  /**
   * Permission to update one's own username.
   * Required by ClientService.UpdateSelfUsername RPC.
   *
   * @generated from enum value: UPDATE_SELF_USERNAME = 13;
   */
  UPDATE_SELF_USERNAME = 13,

  /**
   * Permission to update one's own email address.
   * Required by ClientService.UpdateSelfEmail RPC.
   *
   * @generated from enum value: UPDATE_SELF_EMAIL = 14;
   */
  UPDATE_SELF_EMAIL = 14,

  /**
   * Permission to generate API tokens for other users.
   * Required by UserService.GenerateUserAPIToken RPC.
   *
   * @generated from enum value: GENERATE_API_TOKEN = 16;
   */
  GENERATE_API_TOKEN = 16,

  /**
   * Permission to invalidate one's own sessions.
   * Required by ClientService.InvalidateSelfSessions RPC.
   * Logs the user out of all devices.
   *
   * @generated from enum value: INVALIDATE_SELF_SESSIONS = 17;
   */
  INVALIDATE_SELF_SESSIONS = 17,
}

/**
 * Describes the enum soulfire.v1.GlobalPermission.
 */
export const GlobalPermissionSchema: GenEnum<GlobalPermission> = /*@__PURE__*/
  enumDesc(file_soulfire_common, 2);

/**
 * Permissions that apply to a specific instance.
 * These permissions are scoped to individual instances and control what operations
 * a user can perform on that instance. Checked via PermissionContext.instance() method.
 * Permission grants are stored per-user per-instance in the database.
 *
 * @generated from enum soulfire.v1.InstancePermission
 */
export enum InstancePermission {
  /**
   * Permission to execute commands within this instance.
   * Required by CommandService for instance-level command execution.
   *
   * @generated from enum value: INSTANCE_COMMAND_EXECUTION = 0;
   */
  INSTANCE_COMMAND_EXECUTION = 0,

  /**
   * Permission to read instance information and configuration.
   * Required by InstanceService.GetInstanceInfo RPC.
   * Also required to see the instance in InstanceService.ListInstances.
   *
   * @generated from enum value: READ_INSTANCE = 2;
   */
  READ_INSTANCE = 2,

  /**
   * Permission to update instance metadata (friendly name, icon).
   * Required by InstanceService.UpdateInstanceMeta RPC.
   *
   * @generated from enum value: UPDATE_INSTANCE_META = 3;
   */
  UPDATE_INSTANCE_META = 3,

  /**
   * Permission to update instance configuration (settings, accounts, proxies).
   * Required by InstanceService.UpdateInstanceConfig, UpdateInstanceConfigEntry,
   * and all account/proxy add/remove/update RPCs.
   *
   * @generated from enum value: UPDATE_INSTANCE_CONFIG = 14;
   */
  UPDATE_INSTANCE_CONFIG = 14,

  /**
   * Permission to delete this instance entirely.
   * Required by InstanceService.DeleteInstance RPC.
   * This is a destructive operation that cannot be undone.
   *
   * @generated from enum value: DELETE_INSTANCE = 4;
   */
  DELETE_INSTANCE = 4,

  /**
   * Permission to authenticate Minecraft accounts for this instance.
   * Required by MCAuthService RPCs (LoginCredentials, LoginDeviceCode, Refresh).
   * Allows adding new accounts or refreshing existing account tokens.
   *
   * @generated from enum value: AUTHENTICATE_MC_ACCOUNT = 6;
   */
  AUTHENTICATE_MC_ACCOUNT = 6,

  /**
   * Permission to check proxy connectivity and latency for this instance.
   * Required by ProxyCheckService.Check RPC.
   *
   * @generated from enum value: CHECK_PROXY = 7;
   */
  CHECK_PROXY = 7,

  /**
   * Permission to download files from URLs through the server.
   * Required by DownloadService.Download RPC.
   * Used for fetching remote resources through instance proxies.
   *
   * @generated from enum value: DOWNLOAD_URL = 8;
   */
  DOWNLOAD_URL = 8,

  /**
   * Permission to access WebDAV object storage for this instance.
   * Required to read/write files in the instance's storage area via WebDAV.
   *
   * @generated from enum value: ACCESS_OBJECT_STORAGE = 9;
   */
  ACCESS_OBJECT_STORAGE = 9,

  /**
   * Permission to subscribe to log streams for this instance.
   * Required by LogService for instance-specific log streaming.
   *
   * @generated from enum value: INSTANCE_SUBSCRIBE_LOGS = 13;
   */
  INSTANCE_SUBSCRIBE_LOGS = 13,

  /**
   * Permission to read the audit log for this instance.
   * Required by InstanceService.GetAuditLog RPC.
   * Shows command executions and state changes with user attribution.
   *
   * @generated from enum value: READ_INSTANCE_AUDIT_LOGS = 15;
   */
  READ_INSTANCE_AUDIT_LOGS = 15,

  /**
   * Permission to read information about individual bots in this instance.
   * Required by BotService RPCs for reading bot state and live data.
   * Also required by InstanceService.GetAccountMetadata RPC.
   *
   * @generated from enum value: READ_BOT_INFO = 10;
   */
  READ_BOT_INFO = 10,

  /**
   * Permission to update configuration for individual bots.
   * Required by BotService RPCs for modifying bot settings.
   * Also required for SetAccountMetadataEntry and DeleteAccountMetadataEntry.
   *
   * @generated from enum value: UPDATE_BOT_CONFIG = 11;
   */
  UPDATE_BOT_CONFIG = 11,

  /**
   * Permission to change which bots should be connected.
   * Required by BotService.SetBotsDesiredState and RestartBots.
   *
   * @generated from enum value: CONTROL_BOTS = 21;
   */
  CONTROL_BOTS = 21,

  /**
   * Permission to activate, deactivate, and dry-run scripts.
   *
   * @generated from enum value: EXECUTE_SCRIPTS = 22;
   */
  EXECUTE_SCRIPTS = 22,

  /**
   * Permission to control a connected bot in the Minecraft world.
   * Required for chat, movement, inventory, interaction, and pathfinding RPCs.
   * This is deliberately separate from UPDATE_BOT_CONFIG so operators can
   * script bots without changing persistent settings.
   *
   * @generated from enum value: CONTROL_BOT_ACTIONS = 23;
   */
  CONTROL_BOT_ACTIONS = 23,

  /**
   * Permission to inject version-dependent raw Minecraft protocol packets.
   * This is intentionally admin-only by default.
   *
   * @generated from enum value: RAW_PROTOCOL = 24;
   */
  RAW_PROTOCOL = 24,
}

/**
 * Describes the enum soulfire.v1.InstancePermission.
 */
export const InstancePermissionSchema: GenEnum<InstancePermission> = /*@__PURE__*/
  enumDesc(file_soulfire_common, 3);

/**
 * The role assigned to a user account, determining their base permission level.
 * Roles provide a coarse-grained permission model that is supplemented by
 * specific permission grants at the global and instance levels.
 *
 * @generated from enum soulfire.v1.UserRole
 */
export enum UserRole {
  /**
   * Administrator role with full access to all features.
   * ADMIN users implicitly have all GlobalPermission and InstancePermission values granted.
   * Only ADMIN users can manage other users and server configuration by default.
   *
   * @generated from enum value: ADMIN = 0;
   */
  ADMIN = 0,

  /**
   * Standard user role with limited default permissions.
   * USER role accounts require explicit permission grants for most operations.
   * Default permissions for USER role are controlled by server configuration.
   *
   * @generated from enum value: USER = 1;
   */
  USER = 1,
}

/**
 * Describes the enum soulfire.v1.UserRole.
 */
export const UserRoleSchema: GenEnum<UserRole> = /*@__PURE__*/
  enumDesc(file_soulfire_common, 4);

/**
 * The scope/level at which a setting applies.
 * Determines where the setting value is stored and when it takes effect.
 * Used in SettingsDefinition to indicate the setting's configuration scope.
 *
 * @generated from enum soulfire.v1.SettingsPageEntryScopeType
 */
export enum SettingsPageEntryScopeType {
  /**
   * Server-level setting that applies globally to the entire SoulFire server.
   * Stored in the server configuration (ServerConfig).
   * Affects all instances and users on the server.
   *
   * @generated from enum value: SERVER = 0;
   */
  SERVER = 0,

  /**
   * Instance-level setting that applies to a specific instance.
   * Stored in the instance configuration (InstanceConfig.settings).
   * Affects all bots within that instance.
   *
   * @generated from enum value: INSTANCE = 1;
   */
  INSTANCE = 1,

  /**
   * Bot-level setting that applies to individual bot accounts.
   * Stored per-account in MinecraftAccountProto.config.
   * Overrides instance settings for that specific bot.
   *
   * @generated from enum value: BOT = 2;
   */
  BOT = 2,
}

/**
 * Describes the enum soulfire.v1.SettingsPageEntryScopeType.
 */
export const SettingsPageEntryScopeTypeSchema: GenEnum<SettingsPageEntryScopeType> = /*@__PURE__*/
  enumDesc(file_soulfire_common, 5);
