// @generated by protoc-gen-es v2.13.0 with parameter "target=ts,import_extension=js"
// @generated from file soulfire/instance.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 type { InstancePermission, MinecraftAccountProto, ProxyProto, ServerPlugin, SettingsDefinition, SettingsNamespace, SettingsPage } from "./common_pb.js";
import { file_soulfire_common } from "./common_pb.js";
import { file_soulfire_api_docs } from "./api_docs_pb.js";
import type { BotFleetSummary } from "./bot_pb.js";
import { file_soulfire_bot } from "./bot_pb.js";
import { file_google_api_annotations } from "../google/api/annotations_pb.js";
import { file_google_api_field_behavior } from "../google/api/field_behavior_pb.js";
import type { Timestamp, Value } from "@bufbuild/protobuf/wkt";
import { file_google_protobuf_struct, file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
import type { Message } from "@bufbuild/protobuf";

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

/**
 * Represents a user associated with an instance, typically used in audit logs
 * to track who performed an action.
 *
 * @generated from message soulfire.v1.InstanceUser
 */
export type InstanceUser = Message<"soulfire.v1.InstanceUser"> & {
  /**
   * Unique identifier for the user (UUID format).
   *
   * @generated from field: string id = 1;
   */
  id: string;

  /**
   * The username of the user.
   *
   * @generated from field: string username = 2;
   */
  username: string;

  /**
   * The email address of the user.
   *
   * @generated from field: string email = 3;
   */
  email: string;
};

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

/**
 * Contains the complete configuration for an instance, including settings,
 * Minecraft accounts, and proxies.
 *
 * @generated from message soulfire.v1.InstanceConfig
 */
export type InstanceConfig = Message<"soulfire.v1.InstanceConfig"> & {
  /**
   * Instance settings organized by namespace. Each namespace contains
   * key-value pairs for configuration options.
   *
   * @generated from field: repeated soulfire.v1.SettingsNamespace settings = 1;
   */
  settings: SettingsNamespace[];

  /**
   * List of Minecraft accounts available to this instance for bot connections.
   *
   * @generated from field: repeated soulfire.v1.MinecraftAccountProto accounts = 2;
   */
  accounts: MinecraftAccountProto[];

  /**
   * List of proxies available to this instance for routing bot connections.
   *
   * @generated from field: repeated soulfire.v1.ProxyProto proxies = 3;
   */
  proxies: ProxyProto[];

  /**
   * Persistent metadata stored with the instance across sessions.
   * Organized as namespace -> key -> value mappings.
   * Used by plugins and the system to store instance-specific state
   * that should persist across restarts.
   *
   * @generated from field: repeated soulfire.v1.SettingsNamespace persistent_metadata = 4;
   */
  persistentMetadata: SettingsNamespace[];
};

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

/**
 * Request to create a new instance.
 *
 * @generated from message soulfire.v1.InstanceCreateRequest
 */
export type InstanceCreateRequest = Message<"soulfire.v1.InstanceCreateRequest"> & {
  /**
   * A human-readable name for the instance. This will be displayed in the UI
   * and can be changed later via UpdateInstanceMeta.
   *
   * @generated from field: string friendlyName = 1;
   */
  friendlyName: string;
};

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

/**
 * Response after successfully creating an instance.
 *
 * @generated from message soulfire.v1.InstanceCreateResponse
 */
export type InstanceCreateResponse = Message<"soulfire.v1.InstanceCreateResponse"> & {
  /**
   * The unique identifier (UUID) of the newly created instance.
   * Use this ID for all subsequent operations on the instance.
   *
   * @generated from field: string id = 1;
   */
  id: string;
};

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

/**
 * Request to delete an existing instance.
 *
 * @generated from message soulfire.v1.InstanceDeleteRequest
 */
export type InstanceDeleteRequest = Message<"soulfire.v1.InstanceDeleteRequest"> & {
  /**
   * The unique identifier (UUID) of the instance to delete.
   * All connected bots are stopped before deletion.
   *
   * @generated from field: string id = 1;
   */
  id: string;
};

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

/**
 * Response after successfully deleting an instance.
 * Empty response indicates successful deletion.
 *
 * @generated from message soulfire.v1.InstanceDeleteResponse
 */
export type InstanceDeleteResponse = Message<"soulfire.v1.InstanceDeleteResponse"> & {
};

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

/**
 * Request to list all instances visible to the current user.
 *
 * @generated from message soulfire.v1.InstanceListRequest
 */
export type InstanceListRequest = Message<"soulfire.v1.InstanceListRequest"> & {
};

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

/**
 * Response containing a list of instances the current user has permission to view.
 *
 * @generated from message soulfire.v1.InstanceListResponse
 */
export type InstanceListResponse = Message<"soulfire.v1.InstanceListResponse"> & {
  /**
   * List of instances the user has READ_INSTANCE permission for.
   *
   * @generated from field: repeated soulfire.v1.InstanceListResponse.Instance instances = 1;
   */
  instances: InstanceListResponse_Instance[];
};

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

/**
 * Summary information about a single instance.
 *
 * @generated from message soulfire.v1.InstanceListResponse.Instance
 */
export type InstanceListResponse_Instance = Message<"soulfire.v1.InstanceListResponse.Instance"> & {
  /**
   * The unique identifier (UUID) of the instance.
   *
   * @generated from field: string id = 1;
   */
  id: string;

  /**
   * The human-readable name of the instance.
   *
   * @generated from field: string friendly_name = 2;
   */
  friendlyName: string;

  /**
   * The icon identifier for the instance (used for UI display).
   *
   * @generated from field: string icon = 5;
   */
  icon: string;

  /**
   * The permissions the current user has on this instance.
   * Each permission indicates whether a specific action is allowed.
   *
   * @generated from field: repeated soulfire.v1.InstancePermissionState instance_permissions = 4;
   */
  instancePermissions: InstancePermissionState[];

  /**
   * Aggregate desired and runtime state for the instance's bots.
   *
   * @generated from field: soulfire.v1.BotFleetSummary bot_summary = 6;
   */
  botSummary?: BotFleetSummary | undefined;
};

/**
 * Describes the message soulfire.v1.InstanceListResponse.Instance.
 * Use `create(InstanceListResponse_InstanceSchema)` to create a new message.
 */
export const InstanceListResponse_InstanceSchema: GenMessage<InstanceListResponse_Instance> = /*@__PURE__*/
  messageDesc(file_soulfire_instance, 7, 0);

/**
 * Represents the grant status of a specific instance permission for the current user.
 *
 * @generated from message soulfire.v1.InstancePermissionState
 */
export type InstancePermissionState = Message<"soulfire.v1.InstancePermissionState"> & {
  /**
   * The permission being described.
   *
   * @generated from field: soulfire.v1.InstancePermission instance_permission = 1;
   */
  instancePermission: InstancePermission;

  /**
   * Whether the current user has been granted this permission.
   *
   * @generated from field: bool granted = 2;
   */
  granted: boolean;
};

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

/**
 * Request to get detailed information about a specific instance.
 *
 * @generated from message soulfire.v1.InstanceInfoRequest
 */
export type InstanceInfoRequest = Message<"soulfire.v1.InstanceInfoRequest"> & {
  /**
   * The unique identifier (UUID) of the instance.
   *
   * @generated from field: string id = 1;
   */
  id: string;

  /**
   * Optional timestamp for conditional requests. If provided and the instance
   * configuration has not been modified since this timestamp, the server returns
   * InstanceNotModified instead of the full InstanceInfo. This helps reduce
   * bandwidth for polling clients.
   *
   * @generated from field: optional google.protobuf.Timestamp if_modified_since = 2;
   */
  ifModifiedSince?: Timestamp | undefined;
};

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

/**
 * Contains comprehensive information about an instance including its
 * configuration, state, permissions, and available settings.
 *
 * @generated from message soulfire.v1.InstanceInfo
 */
export type InstanceInfo = Message<"soulfire.v1.InstanceInfo"> & {
  /**
   * The human-readable name of the instance.
   *
   * @generated from field: string friendly_name = 1;
   */
  friendlyName: string;

  /**
   * The icon identifier for the instance (used for UI display).
   *
   * @generated from field: string icon = 5;
   */
  icon: string;

  /**
   * The complete configuration of the instance including settings,
   * accounts, and proxies.
   *
   * @generated from field: soulfire.v1.InstanceConfig config = 2;
   */
  config?: InstanceConfig | undefined;

  /**
   * The permissions the current user has on this instance.
   *
   * @generated from field: repeated soulfire.v1.InstancePermissionState instance_permissions = 4;
   */
  instancePermissions: InstancePermissionState[];

  /**
   * All available settings definitions that can be rendered by identifier.
   * These define the schema and UI configuration for each setting.
   *
   * @generated from field: repeated soulfire.v1.SettingsDefinition settings_definitions = 8;
   */
  settingsDefinitions: SettingsDefinition[];

  /**
   * Pages that group settings together for UI rendering.
   * References settings by their identifiers from settings_definitions.
   *
   * @generated from field: repeated soulfire.v1.SettingsPage instance_settings = 6;
   */
  instanceSettings: SettingsPage[];

  /**
   * List of plugins registered with this instance.
   *
   * @generated from field: repeated soulfire.v1.ServerPlugin plugins = 7;
   */
  plugins: ServerPlugin[];

  /**
   * Timestamp of when the configuration was last modified.
   * Used for conditional requests via if_modified_since.
   *
   * @generated from field: google.protobuf.Timestamp last_modified = 9;
   */
  lastModified?: Timestamp | undefined;

  /**
   * Aggregate desired and runtime state for the instance's bots.
   *
   * @generated from field: soulfire.v1.BotFleetSummary bot_summary = 10;
   */
  botSummary?: BotFleetSummary | undefined;
};

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

/**
 * Returned when the instance configuration has not changed since
 * the if_modified_since timestamp provided in the request.
 *
 * @generated from message soulfire.v1.InstanceNotModified
 */
export type InstanceNotModified = Message<"soulfire.v1.InstanceNotModified"> & {
  /**
   * The current last_modified timestamp of the instance.
   * Clients should use this for subsequent conditional requests.
   *
   * @generated from field: google.protobuf.Timestamp last_modified = 1;
   */
  lastModified?: Timestamp | undefined;
};

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

/**
 * Response for GetInstanceInfo containing either full info or a not-modified status.
 *
 * @generated from message soulfire.v1.InstanceInfoResponse
 */
export type InstanceInfoResponse = Message<"soulfire.v1.InstanceInfoResponse"> & {
  /**
   * @generated from oneof soulfire.v1.InstanceInfoResponse.result
   */
  result: {
    /**
     * Full instance information when the config has been modified
     * or no if_modified_since was provided.
     *
     * @generated from field: soulfire.v1.InstanceInfo info = 1;
     */
    value: InstanceInfo;
    case: "info";
  } | {
    /**
     * Returned when the config has not changed since if_modified_since.
     *
     * @generated from field: soulfire.v1.InstanceNotModified not_modified = 2;
     */
    value: InstanceNotModified;
    case: "notModified";
  } | { case: undefined; value?: undefined };
};

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

/**
 * Request to update instance metadata (name or icon).
 *
 * @generated from message soulfire.v1.InstanceUpdateMetaRequest
 */
export type InstanceUpdateMetaRequest = Message<"soulfire.v1.InstanceUpdateMetaRequest"> & {
  /**
   * The unique identifier (UUID) of the instance to update.
   *
   * @generated from field: string id = 1;
   */
  id: string;

  /**
   * The metadata field to update. Only one can be set per request.
   *
   * @generated from oneof soulfire.v1.InstanceUpdateMetaRequest.meta
   */
  meta: {
    /**
     * New human-readable name for the instance.
     *
     * @generated from field: string friendly_name = 2;
     */
    value: string;
    case: "friendlyName";
  } | {
    /**
     * New icon identifier for the instance.
     *
     * @generated from field: string icon = 3;
     */
    value: string;
    case: "icon";
  } | { case: undefined; value?: undefined };
};

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

/**
 * Response after successfully updating instance metadata.
 * Empty response indicates success.
 *
 * @generated from message soulfire.v1.InstanceUpdateMetaResponse
 */
export type InstanceUpdateMetaResponse = Message<"soulfire.v1.InstanceUpdateMetaResponse"> & {
};

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

/**
 * Request to replace the entire instance configuration.
 * This is typically used for profile import operations.
 * For individual setting changes, use UpdateInstanceConfigEntry instead.
 *
 * @generated from message soulfire.v1.InstanceUpdateConfigRequest
 */
export type InstanceUpdateConfigRequest = Message<"soulfire.v1.InstanceUpdateConfigRequest"> & {
  /**
   * The unique identifier (UUID) of the instance to update.
   *
   * @generated from field: string id = 1;
   */
  id: string;

  /**
   * The complete new configuration to replace the existing one.
   * Includes settings, accounts, and proxies.
   *
   * @generated from field: soulfire.v1.InstanceConfig config = 2;
   */
  config?: InstanceConfig | undefined;
};

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

/**
 * Response after successfully updating instance configuration.
 * Empty response indicates success.
 *
 * @generated from message soulfire.v1.InstanceUpdateConfigResponse
 */
export type InstanceUpdateConfigResponse = Message<"soulfire.v1.InstanceUpdateConfigResponse"> & {
};

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

/**
 * Request to update a single configuration entry.
 * This is the preferred method for individual setting changes as it
 * is more efficient than replacing the entire configuration.
 *
 * @generated from message soulfire.v1.InstanceUpdateConfigEntryRequest
 */
export type InstanceUpdateConfigEntryRequest = Message<"soulfire.v1.InstanceUpdateConfigEntryRequest"> & {
  /**
   * The unique identifier (UUID) of the instance to update.
   *
   * @generated from field: string id = 1;
   */
  id: string;

  /**
   * The namespace of the setting (e.g., "bot", "account", plugin ID).
   *
   * @generated from field: string namespace = 2;
   */
  namespace: string;

  /**
   * The key of the setting within the namespace.
   *
   * @generated from field: string key = 3;
   */
  key: string;

  /**
   * The new value for the setting. Supports JSON value types
   * (string, number, boolean, null, array, object).
   *
   * @generated from field: google.protobuf.Value value = 4;
   */
  value?: Value | undefined;
};

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

/**
 * Response after successfully updating a configuration entry.
 * Empty response indicates success.
 *
 * @generated from message soulfire.v1.InstanceUpdateConfigEntryResponse
 */
export type InstanceUpdateConfigEntryResponse = Message<"soulfire.v1.InstanceUpdateConfigEntryResponse"> & {
};

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

/**
 * Request to add a single Minecraft account to an instance.
 *
 * @generated from message soulfire.v1.InstanceAddAccountRequest
 */
export type InstanceAddAccountRequest = Message<"soulfire.v1.InstanceAddAccountRequest"> & {
  /**
   * The unique identifier (UUID) of the instance.
   *
   * @generated from field: string id = 1;
   */
  id: string;

  /**
   * The Minecraft account to add. The profile_id must be unique
   * within the instance.
   *
   * @generated from field: soulfire.v1.MinecraftAccountProto account = 2;
   */
  account?: MinecraftAccountProto | undefined;
};

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

/**
 * Response after successfully adding an account.
 * Empty response indicates success.
 *
 * @generated from message soulfire.v1.InstanceAddAccountResponse
 */
export type InstanceAddAccountResponse = Message<"soulfire.v1.InstanceAddAccountResponse"> & {
};

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

/**
 * Request to remove a Minecraft account from an instance.
 *
 * @generated from message soulfire.v1.InstanceRemoveAccountRequest
 */
export type InstanceRemoveAccountRequest = Message<"soulfire.v1.InstanceRemoveAccountRequest"> & {
  /**
   * The unique identifier (UUID) of the instance.
   *
   * @generated from field: string id = 1;
   */
  id: string;

  /**
   * The profile_id (UUID) of the account to remove.
   *
   * @generated from field: string profile_id = 2;
   */
  profileId: string;
};

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

/**
 * Response after successfully removing an account.
 * Empty response indicates success.
 *
 * @generated from message soulfire.v1.InstanceRemoveAccountResponse
 */
export type InstanceRemoveAccountResponse = Message<"soulfire.v1.InstanceRemoveAccountResponse"> & {
};

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

/**
 * Request to update an existing Minecraft account in an instance.
 * The account is matched by profile_id and replaced with the new data.
 *
 * @generated from message soulfire.v1.InstanceUpdateAccountRequest
 */
export type InstanceUpdateAccountRequest = Message<"soulfire.v1.InstanceUpdateAccountRequest"> & {
  /**
   * The unique identifier (UUID) of the instance.
   *
   * @generated from field: string id = 1;
   */
  id: string;

  /**
   * The updated account data. The profile_id must match an existing
   * account in the instance.
   *
   * @generated from field: soulfire.v1.MinecraftAccountProto account = 2;
   */
  account?: MinecraftAccountProto | undefined;
};

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

/**
 * Response after successfully updating an account.
 * Empty response indicates success.
 *
 * @generated from message soulfire.v1.InstanceUpdateAccountResponse
 */
export type InstanceUpdateAccountResponse = Message<"soulfire.v1.InstanceUpdateAccountResponse"> & {
};

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

/**
 * Request to add multiple Minecraft accounts to an instance in a single operation.
 * More efficient than multiple individual AddInstanceAccount calls.
 *
 * @generated from message soulfire.v1.InstanceAddAccountsBatchRequest
 */
export type InstanceAddAccountsBatchRequest = Message<"soulfire.v1.InstanceAddAccountsBatchRequest"> & {
  /**
   * The unique identifier (UUID) of the instance.
   *
   * @generated from field: string id = 1;
   */
  id: string;

  /**
   * List of accounts to add. Each account's profile_id must be unique
   * within the instance.
   *
   * @generated from field: repeated soulfire.v1.MinecraftAccountProto accounts = 2;
   */
  accounts: MinecraftAccountProto[];
};

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

/**
 * Response after successfully adding accounts in batch.
 * Empty response indicates success.
 *
 * @generated from message soulfire.v1.InstanceAddAccountsBatchResponse
 */
export type InstanceAddAccountsBatchResponse = Message<"soulfire.v1.InstanceAddAccountsBatchResponse"> & {
};

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

/**
 * Request to remove multiple Minecraft accounts from an instance in a single operation.
 * More efficient than multiple individual RemoveInstanceAccount calls.
 *
 * @generated from message soulfire.v1.InstanceRemoveAccountsBatchRequest
 */
export type InstanceRemoveAccountsBatchRequest = Message<"soulfire.v1.InstanceRemoveAccountsBatchRequest"> & {
  /**
   * The unique identifier (UUID) of the instance.
   *
   * @generated from field: string id = 1;
   */
  id: string;

  /**
   * List of profile_ids (UUIDs) of accounts to remove.
   *
   * @generated from field: repeated string profile_ids = 2;
   */
  profileIds: string[];
};

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

/**
 * Response after successfully removing accounts in batch.
 * Empty response indicates success.
 *
 * @generated from message soulfire.v1.InstanceRemoveAccountsBatchResponse
 */
export type InstanceRemoveAccountsBatchResponse = Message<"soulfire.v1.InstanceRemoveAccountsBatchResponse"> & {
};

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

/**
 * Request to add a single proxy to an instance.
 *
 * @generated from message soulfire.v1.InstanceAddProxyRequest
 */
export type InstanceAddProxyRequest = Message<"soulfire.v1.InstanceAddProxyRequest"> & {
  /**
   * The unique identifier (UUID) of the instance.
   *
   * @generated from field: string id = 1;
   */
  id: string;

  /**
   * The proxy configuration to add.
   *
   * @generated from field: soulfire.v1.ProxyProto proxy = 2;
   */
  proxy?: ProxyProto | undefined;
};

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

/**
 * Response after successfully adding a proxy.
 * Empty response indicates success.
 *
 * @generated from message soulfire.v1.InstanceAddProxyResponse
 */
export type InstanceAddProxyResponse = Message<"soulfire.v1.InstanceAddProxyResponse"> & {
};

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

/**
 * Request to remove a proxy from an instance by its index.
 *
 * @generated from message soulfire.v1.InstanceRemoveProxyRequest
 */
export type InstanceRemoveProxyRequest = Message<"soulfire.v1.InstanceRemoveProxyRequest"> & {
  /**
   * The unique identifier (UUID) of the instance.
   *
   * @generated from field: string id = 1;
   */
  id: string;

  /**
   * The zero-based index of the proxy to remove.
   * Returns INVALID_ARGUMENT if index is out of bounds.
   *
   * @generated from field: int32 index = 2;
   */
  index: number;
};

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

/**
 * Response after successfully removing a proxy.
 * Empty response indicates success.
 *
 * @generated from message soulfire.v1.InstanceRemoveProxyResponse
 */
export type InstanceRemoveProxyResponse = Message<"soulfire.v1.InstanceRemoveProxyResponse"> & {
};

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

/**
 * Request to update an existing proxy in an instance.
 *
 * @generated from message soulfire.v1.InstanceUpdateProxyRequest
 */
export type InstanceUpdateProxyRequest = Message<"soulfire.v1.InstanceUpdateProxyRequest"> & {
  /**
   * The unique identifier (UUID) of the instance.
   *
   * @generated from field: string id = 1;
   */
  id: string;

  /**
   * The zero-based index of the proxy to update.
   * Returns INVALID_ARGUMENT if index is out of bounds.
   *
   * @generated from field: int32 index = 2;
   */
  index: number;

  /**
   * The new proxy configuration to replace the existing one.
   *
   * @generated from field: soulfire.v1.ProxyProto proxy = 3;
   */
  proxy?: ProxyProto | undefined;
};

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

/**
 * Response after successfully updating a proxy.
 * Empty response indicates success.
 *
 * @generated from message soulfire.v1.InstanceUpdateProxyResponse
 */
export type InstanceUpdateProxyResponse = Message<"soulfire.v1.InstanceUpdateProxyResponse"> & {
};

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

/**
 * Request to add multiple proxies to an instance in a single operation.
 * More efficient than multiple individual AddInstanceProxy calls.
 *
 * @generated from message soulfire.v1.InstanceAddProxiesBatchRequest
 */
export type InstanceAddProxiesBatchRequest = Message<"soulfire.v1.InstanceAddProxiesBatchRequest"> & {
  /**
   * The unique identifier (UUID) of the instance.
   *
   * @generated from field: string id = 1;
   */
  id: string;

  /**
   * List of proxy configurations to add.
   *
   * @generated from field: repeated soulfire.v1.ProxyProto proxies = 2;
   */
  proxies: ProxyProto[];
};

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

/**
 * Response after successfully adding proxies in batch.
 * Empty response indicates success.
 *
 * @generated from message soulfire.v1.InstanceAddProxiesBatchResponse
 */
export type InstanceAddProxiesBatchResponse = Message<"soulfire.v1.InstanceAddProxiesBatchResponse"> & {
};

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

/**
 * Request to remove multiple proxies from an instance by their addresses.
 *
 * @generated from message soulfire.v1.InstanceRemoveProxiesBatchRequest
 */
export type InstanceRemoveProxiesBatchRequest = Message<"soulfire.v1.InstanceRemoveProxiesBatchRequest"> & {
  /**
   * The unique identifier (UUID) of the instance.
   *
   * @generated from field: string id = 1;
   */
  id: string;

  /**
   * List of proxy addresses to remove (in serialized format, e.g., "host:port").
   * Proxies matching these addresses will be removed.
   *
   * @generated from field: repeated string addresses = 2;
   */
  addresses: string[];
};

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

/**
 * Response after successfully removing proxies in batch.
 * Empty response indicates success.
 *
 * @generated from message soulfire.v1.InstanceRemoveProxiesBatchResponse
 */
export type InstanceRemoveProxiesBatchResponse = Message<"soulfire.v1.InstanceRemoveProxiesBatchResponse"> & {
};

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

/**
 * Request to retrieve the audit log for an instance.
 *
 * @generated from message soulfire.v1.InstanceAuditLogRequest
 */
export type InstanceAuditLogRequest = Message<"soulfire.v1.InstanceAuditLogRequest"> & {
  /**
   * The unique identifier (UUID) of the instance.
   *
   * @generated from field: string id = 1;
   */
  id: string;
};

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

/**
 * Request to get persistent metadata for a specific Minecraft account.
 * Persistent metadata survives bot restarts and is stored with the account.
 *
 * @generated from message soulfire.v1.GetAccountMetadataRequest
 */
export type GetAccountMetadataRequest = Message<"soulfire.v1.GetAccountMetadataRequest"> & {
  /**
   * The unique identifier (UUID) of the instance containing the account.
   *
   * @generated from field: string instance_id = 1;
   */
  instanceId: string;

  /**
   * The profile_id (UUID) of the Minecraft account.
   *
   * @generated from field: string account_id = 2;
   */
  accountId: string;
};

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

/**
 * Response containing the persistent metadata for an account.
 *
 * @generated from message soulfire.v1.GetAccountMetadataResponse
 */
export type GetAccountMetadataResponse = Message<"soulfire.v1.GetAccountMetadataResponse"> & {
  /**
   * Metadata organized by namespace. Each namespace contains
   * key-value pairs of metadata.
   *
   * @generated from field: repeated soulfire.v1.SettingsNamespace metadata = 1;
   */
  metadata: SettingsNamespace[];
};

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

/**
 * Request to set a single persistent metadata entry for an account.
 *
 * @generated from message soulfire.v1.SetAccountMetadataEntryRequest
 */
export type SetAccountMetadataEntryRequest = Message<"soulfire.v1.SetAccountMetadataEntryRequest"> & {
  /**
   * The unique identifier (UUID) of the instance containing the account.
   *
   * @generated from field: string instance_id = 1;
   */
  instanceId: string;

  /**
   * The profile_id (UUID) of the Minecraft account.
   *
   * @generated from field: string account_id = 2;
   */
  accountId: string;

  /**
   * The namespace for the metadata entry.
   *
   * @generated from field: string namespace = 3;
   */
  namespace: string;

  /**
   * The key for the metadata entry within the namespace.
   *
   * @generated from field: string key = 4;
   */
  key: string;

  /**
   * The value to set. Supports JSON value types.
   *
   * @generated from field: google.protobuf.Value value = 5;
   */
  value?: Value | undefined;
};

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

/**
 * Response after successfully setting a metadata entry.
 * Empty response indicates success.
 *
 * @generated from message soulfire.v1.SetAccountMetadataEntryResponse
 */
export type SetAccountMetadataEntryResponse = Message<"soulfire.v1.SetAccountMetadataEntryResponse"> & {
};

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

/**
 * Request to delete a persistent metadata entry from an account.
 *
 * @generated from message soulfire.v1.DeleteAccountMetadataEntryRequest
 */
export type DeleteAccountMetadataEntryRequest = Message<"soulfire.v1.DeleteAccountMetadataEntryRequest"> & {
  /**
   * The unique identifier (UUID) of the instance containing the account.
   *
   * @generated from field: string instance_id = 1;
   */
  instanceId: string;

  /**
   * The profile_id (UUID) of the Minecraft account.
   *
   * @generated from field: string account_id = 2;
   */
  accountId: string;

  /**
   * The namespace of the metadata entry to delete.
   *
   * @generated from field: string namespace = 3;
   */
  namespace: string;

  /**
   * The key of the metadata entry to delete.
   *
   * @generated from field: string key = 4;
   */
  key: string;
};

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

/**
 * Response after successfully deleting a metadata entry.
 * Empty response indicates success.
 *
 * @generated from message soulfire.v1.DeleteAccountMetadataEntryResponse
 */
export type DeleteAccountMetadataEntryResponse = Message<"soulfire.v1.DeleteAccountMetadataEntryResponse"> & {
};

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

/**
 * Request to get persistent metadata for an instance.
 * Persistent metadata survives restarts and is stored with the instance.
 *
 * @generated from message soulfire.v1.GetInstanceMetadataRequest
 */
export type GetInstanceMetadataRequest = Message<"soulfire.v1.GetInstanceMetadataRequest"> & {
  /**
   * The unique identifier (UUID) of the instance.
   *
   * @generated from field: string instance_id = 1;
   */
  instanceId: string;
};

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

/**
 * Response containing the persistent metadata for an instance.
 *
 * @generated from message soulfire.v1.GetInstanceMetadataResponse
 */
export type GetInstanceMetadataResponse = Message<"soulfire.v1.GetInstanceMetadataResponse"> & {
  /**
   * Metadata organized by namespace. Each namespace contains
   * key-value pairs of metadata.
   *
   * @generated from field: repeated soulfire.v1.SettingsNamespace metadata = 1;
   */
  metadata: SettingsNamespace[];
};

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

/**
 * Request to set a single persistent metadata entry for an instance.
 *
 * @generated from message soulfire.v1.SetInstanceMetadataEntryRequest
 */
export type SetInstanceMetadataEntryRequest = Message<"soulfire.v1.SetInstanceMetadataEntryRequest"> & {
  /**
   * The unique identifier (UUID) of the instance.
   *
   * @generated from field: string instance_id = 1;
   */
  instanceId: string;

  /**
   * The namespace for the metadata entry.
   *
   * @generated from field: string namespace = 2;
   */
  namespace: string;

  /**
   * The key for the metadata entry within the namespace.
   *
   * @generated from field: string key = 3;
   */
  key: string;

  /**
   * The value to set. Supports JSON value types.
   *
   * @generated from field: google.protobuf.Value value = 4;
   */
  value?: Value | undefined;
};

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

/**
 * Response after successfully setting an instance metadata entry.
 * Empty response indicates success.
 *
 * @generated from message soulfire.v1.SetInstanceMetadataEntryResponse
 */
export type SetInstanceMetadataEntryResponse = Message<"soulfire.v1.SetInstanceMetadataEntryResponse"> & {
};

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

/**
 * Request to delete a persistent metadata entry from an instance.
 *
 * @generated from message soulfire.v1.DeleteInstanceMetadataEntryRequest
 */
export type DeleteInstanceMetadataEntryRequest = Message<"soulfire.v1.DeleteInstanceMetadataEntryRequest"> & {
  /**
   * The unique identifier (UUID) of the instance.
   *
   * @generated from field: string instance_id = 1;
   */
  instanceId: string;

  /**
   * The namespace of the metadata entry to delete.
   *
   * @generated from field: string namespace = 2;
   */
  namespace: string;

  /**
   * The key of the metadata entry to delete.
   *
   * @generated from field: string key = 3;
   */
  key: string;
};

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

/**
 * Response after successfully deleting an instance metadata entry.
 * Empty response indicates success.
 *
 * @generated from message soulfire.v1.DeleteInstanceMetadataEntryResponse
 */
export type DeleteInstanceMetadataEntryResponse = Message<"soulfire.v1.DeleteInstanceMetadataEntryResponse"> & {
};

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

/**
 * Response containing the audit log entries for an instance.
 *
 * @generated from message soulfire.v1.InstanceAuditLogResponse
 */
export type InstanceAuditLogResponse = Message<"soulfire.v1.InstanceAuditLogResponse"> & {
  /**
   * List of audit log entries, ordered by timestamp descending (newest first).
   *
   * @generated from field: repeated soulfire.v1.InstanceAuditLogResponse.AuditLogEntry entry = 1;
   */
  entry: InstanceAuditLogResponse_AuditLogEntry[];
};

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

/**
 * A single entry in the audit log.
 *
 * @generated from message soulfire.v1.InstanceAuditLogResponse.AuditLogEntry
 */
export type InstanceAuditLogResponse_AuditLogEntry = Message<"soulfire.v1.InstanceAuditLogResponse.AuditLogEntry"> & {
  /**
   * Unique identifier for this audit log entry.
   *
   * @generated from field: string id = 1;
   */
  id: string;

  /**
   * The user who performed the action.
   *
   * @generated from field: soulfire.v1.InstanceUser user = 2;
   */
  user?: InstanceUser | undefined;

  /**
   * The type of action that was performed.
   *
   * @generated from field: soulfire.v1.InstanceAuditLogResponse.AuditLogEntryType type = 3;
   */
  type: InstanceAuditLogResponse_AuditLogEntryType;

  /**
   * When the action was performed.
   *
   * @generated from field: google.protobuf.Timestamp timestamp = 4;
   */
  timestamp?: Timestamp | undefined;

  /**
   * Additional data about the action (e.g., command text for EXECUTE_COMMAND).
   * May be empty for some action types.
   *
   * @generated from field: string data = 5;
   */
  data: string;
};

/**
 * Describes the message soulfire.v1.InstanceAuditLogResponse.AuditLogEntry.
 * Use `create(InstanceAuditLogResponse_AuditLogEntrySchema)` to create a new message.
 */
export const InstanceAuditLogResponse_AuditLogEntrySchema: GenMessage<InstanceAuditLogResponse_AuditLogEntry> = /*@__PURE__*/
  messageDesc(file_soulfire_instance, 52, 0);

/**
 * Types of actions that are recorded in the audit log.
 *
 * @generated from enum soulfire.v1.InstanceAuditLogResponse.AuditLogEntryType
 */
export enum InstanceAuditLogResponse_AuditLogEntryType {
  /**
   * A command was executed on the instance.
   *
   * @generated from enum value: EXECUTE_COMMAND = 0;
   */
  EXECUTE_COMMAND = 0,

  /**
   * One or more bots had their desired state changed.
   *
   * @generated from enum value: BOT_DESIRED_STATE_CHANGE = 14;
   */
  BOT_DESIRED_STATE_CHANGE = 14,

  /**
   * One or more bots were restarted.
   *
   * @generated from enum value: BOT_RESTART = 15;
   */
  BOT_RESTART = 15,

  /**
   * A permission-scoped plugin RPC completed.
   *
   * @generated from enum value: PLUGIN_RPC = 16;
   */
  PLUGIN_RPC = 16,
}

/**
 * Describes the enum soulfire.v1.InstanceAuditLogResponse.AuditLogEntryType.
 */
export const InstanceAuditLogResponse_AuditLogEntryTypeSchema: GenEnum<InstanceAuditLogResponse_AuditLogEntryType> = /*@__PURE__*/
  enumDesc(file_soulfire_instance, 52, 0);

/**
 * Service for managing SoulFire instances.
 * An instance is a permission and configuration compartment for independently
 * controlled Minecraft bots, settings, accounts, proxies, and remote clients.
 *
 * All operations require appropriate permissions:
 * - CREATE_INSTANCE (global): Required to create new instances
 * - READ_INSTANCE: Required to list and view instance details
 * - UPDATE_INSTANCE_META: Required to change instance name/icon
 * - UPDATE_INSTANCE_CONFIG: Required to modify settings, accounts, and proxies
 * - DELETE_INSTANCE: Required to delete an instance
 * - READ_INSTANCE_AUDIT_LOGS: Required to view audit logs
 * - READ_BOT_INFO: Required to read account metadata
 *
 * @generated from service soulfire.v1.InstanceService
 */
export const InstanceService: GenService<{
  /**
   * Creates a new instance with the given friendly name.
   * Requires: CREATE_INSTANCE global permission
   * Returns: The UUID of the newly created instance
   * Errors: INTERNAL if creation fails
   *
   * @generated from rpc soulfire.v1.InstanceService.CreateInstance
   */
  createInstance: {
    methodKind: "unary";
    input: typeof InstanceCreateRequestSchema;
    output: typeof InstanceCreateResponseSchema;
  },
  /**
   * Permanently deletes an instance and all its data.
   * Connected bots are stopped before the instance is deleted.
   * This operation cannot be undone.
   * Requires: DELETE_INSTANCE permission on the instance
   * Errors: NOT_FOUND if instance does not exist
   *
   * @generated from rpc soulfire.v1.InstanceService.DeleteInstance
   */
  deleteInstance: {
    methodKind: "unary";
    input: typeof InstanceDeleteRequestSchema;
    output: typeof InstanceDeleteResponseSchema;
  },
  /**
   * Lists all instances the current user has permission to view.
   * Only instances where the user has READ_INSTANCE permission are returned.
   * Returns summary information for each instance.
   *
   * @generated from rpc soulfire.v1.InstanceService.ListInstances
   */
  listInstances: {
    methodKind: "unary";
    input: typeof InstanceListRequestSchema;
    output: typeof InstanceListResponseSchema;
  },
  /**
   * Gets detailed information about a specific instance.
   * Supports conditional requests via if_modified_since to reduce bandwidth.
   * Requires: READ_INSTANCE permission on the instance
   * Returns: Full instance info or not_modified status
   * Errors: NOT_FOUND if instance does not exist
   *
   * @generated from rpc soulfire.v1.InstanceService.GetInstanceInfo
   */
  getInstanceInfo: {
    methodKind: "unary";
    input: typeof InstanceInfoRequestSchema;
    output: typeof InstanceInfoResponseSchema;
  },
  /**
   * Updates instance metadata (friendly name or icon).
   * Only one field can be updated per request.
   * Requires: UPDATE_INSTANCE_META permission on the instance
   * Errors: NOT_FOUND if instance does not exist
   *
   * @generated from rpc soulfire.v1.InstanceService.UpdateInstanceMeta
   */
  updateInstanceMeta: {
    methodKind: "unary";
    input: typeof InstanceUpdateMetaRequestSchema;
    output: typeof InstanceUpdateMetaResponseSchema;
  },
  /**
   * Replaces the entire instance configuration.
   * Used primarily for profile import operations.
   * For individual setting changes, use UpdateInstanceConfigEntry instead.
   * Requires: UPDATE_INSTANCE_CONFIG permission on the instance
   * Errors: NOT_FOUND if instance does not exist
   *
   * @generated from rpc soulfire.v1.InstanceService.UpdateInstanceConfig
   */
  updateInstanceConfig: {
    methodKind: "unary";
    input: typeof InstanceUpdateConfigRequestSchema;
    output: typeof InstanceUpdateConfigResponseSchema;
  },
  /**
   * Updates a single configuration entry by namespace and key.
   * More efficient than UpdateInstanceConfig for individual changes.
   * Requires: UPDATE_INSTANCE_CONFIG permission on the instance
   * Errors: NOT_FOUND if instance does not exist
   *
   * @generated from rpc soulfire.v1.InstanceService.UpdateInstanceConfigEntry
   */
  updateInstanceConfigEntry: {
    methodKind: "unary";
    input: typeof InstanceUpdateConfigEntryRequestSchema;
    output: typeof InstanceUpdateConfigEntryResponseSchema;
  },
  /**
   * Adds a Minecraft account to the instance.
   * The account's profile_id must be unique within the instance.
   * Requires: UPDATE_INSTANCE_CONFIG permission on the instance
   * Errors: NOT_FOUND if instance does not exist
   *
   * @generated from rpc soulfire.v1.InstanceService.AddInstanceAccount
   */
  addInstanceAccount: {
    methodKind: "unary";
    input: typeof InstanceAddAccountRequestSchema;
    output: typeof InstanceAddAccountResponseSchema;
  },
  /**
   * Removes a Minecraft account from the instance by profile_id.
   * Requires: UPDATE_INSTANCE_CONFIG permission on the instance
   * Errors: NOT_FOUND if instance does not exist
   *
   * @generated from rpc soulfire.v1.InstanceService.RemoveInstanceAccount
   */
  removeInstanceAccount: {
    methodKind: "unary";
    input: typeof InstanceRemoveAccountRequestSchema;
    output: typeof InstanceRemoveAccountResponseSchema;
  },
  /**
   * Updates an existing Minecraft account in the instance.
   * The account is matched by profile_id and replaced.
   * Requires: UPDATE_INSTANCE_CONFIG permission on the instance
   * Errors: NOT_FOUND if instance does not exist
   *
   * @generated from rpc soulfire.v1.InstanceService.UpdateInstanceAccount
   */
  updateInstanceAccount: {
    methodKind: "unary";
    input: typeof InstanceUpdateAccountRequestSchema;
    output: typeof InstanceUpdateAccountResponseSchema;
  },
  /**
   * Adds multiple Minecraft accounts to the instance in a single operation.
   * More efficient than multiple AddInstanceAccount calls.
   * Requires: UPDATE_INSTANCE_CONFIG permission on the instance
   * Errors: NOT_FOUND if instance does not exist
   *
   * @generated from rpc soulfire.v1.InstanceService.AddInstanceAccountsBatch
   */
  addInstanceAccountsBatch: {
    methodKind: "unary";
    input: typeof InstanceAddAccountsBatchRequestSchema;
    output: typeof InstanceAddAccountsBatchResponseSchema;
  },
  /**
   * Removes multiple Minecraft accounts from the instance by their profile_ids.
   * More efficient than multiple RemoveInstanceAccount calls.
   * Requires: UPDATE_INSTANCE_CONFIG permission on the instance
   * Errors: NOT_FOUND if instance does not exist
   *
   * @generated from rpc soulfire.v1.InstanceService.RemoveInstanceAccountsBatch
   */
  removeInstanceAccountsBatch: {
    methodKind: "unary";
    input: typeof InstanceRemoveAccountsBatchRequestSchema;
    output: typeof InstanceRemoveAccountsBatchResponseSchema;
  },
  /**
   * Adds a proxy to the instance.
   * Requires: UPDATE_INSTANCE_CONFIG permission on the instance
   * Errors: NOT_FOUND if instance does not exist
   *
   * @generated from rpc soulfire.v1.InstanceService.AddInstanceProxy
   */
  addInstanceProxy: {
    methodKind: "unary";
    input: typeof InstanceAddProxyRequestSchema;
    output: typeof InstanceAddProxyResponseSchema;
  },
  /**
   * Removes a proxy from the instance by its index.
   * Requires: UPDATE_INSTANCE_CONFIG permission on the instance
   * Errors: NOT_FOUND if instance does not exist
   * Errors: INVALID_ARGUMENT if index is out of bounds
   *
   * @generated from rpc soulfire.v1.InstanceService.RemoveInstanceProxy
   */
  removeInstanceProxy: {
    methodKind: "unary";
    input: typeof InstanceRemoveProxyRequestSchema;
    output: typeof InstanceRemoveProxyResponseSchema;
  },
  /**
   * Updates an existing proxy in the instance by its index.
   * Requires: UPDATE_INSTANCE_CONFIG permission on the instance
   * Errors: NOT_FOUND if instance does not exist
   * Errors: INVALID_ARGUMENT if index is out of bounds
   *
   * @generated from rpc soulfire.v1.InstanceService.UpdateInstanceProxy
   */
  updateInstanceProxy: {
    methodKind: "unary";
    input: typeof InstanceUpdateProxyRequestSchema;
    output: typeof InstanceUpdateProxyResponseSchema;
  },
  /**
   * Adds multiple proxies to the instance in a single operation.
   * More efficient than multiple AddInstanceProxy calls.
   * Requires: UPDATE_INSTANCE_CONFIG permission on the instance
   * Errors: NOT_FOUND if instance does not exist
   *
   * @generated from rpc soulfire.v1.InstanceService.AddInstanceProxiesBatch
   */
  addInstanceProxiesBatch: {
    methodKind: "unary";
    input: typeof InstanceAddProxiesBatchRequestSchema;
    output: typeof InstanceAddProxiesBatchResponseSchema;
  },
  /**
   * Removes multiple proxies from the instance by their addresses.
   * More efficient than multiple RemoveInstanceProxy calls.
   * Requires: UPDATE_INSTANCE_CONFIG permission on the instance
   * Errors: NOT_FOUND if instance does not exist
   *
   * @generated from rpc soulfire.v1.InstanceService.RemoveInstanceProxiesBatch
   */
  removeInstanceProxiesBatch: {
    methodKind: "unary";
    input: typeof InstanceRemoveProxiesBatchRequestSchema;
    output: typeof InstanceRemoveProxiesBatchResponseSchema;
  },
  /**
   * Retrieves the audit log for an instance.
   * Returns a list of recorded actions ordered by timestamp (newest first).
   * Requires: READ_INSTANCE_AUDIT_LOGS permission on the instance
   * Errors: NOT_FOUND if instance does not exist
   *
   * @generated from rpc soulfire.v1.InstanceService.GetAuditLog
   */
  getAuditLog: {
    methodKind: "unary";
    input: typeof InstanceAuditLogRequestSchema;
    output: typeof InstanceAuditLogResponseSchema;
  },
  /**
   * Gets persistent metadata for a Minecraft account.
   * Persistent metadata survives bot restarts and session changes.
   * Requires: READ_BOT_INFO permission on the instance
   * Errors: NOT_FOUND if instance or account does not exist
   *
   * @generated from rpc soulfire.v1.InstanceService.GetAccountMetadata
   */
  getAccountMetadata: {
    methodKind: "unary";
    input: typeof GetAccountMetadataRequestSchema;
    output: typeof GetAccountMetadataResponseSchema;
  },
  /**
   * Sets a single persistent metadata entry for a Minecraft account.
   * Creates the namespace and key if they don't exist, or updates if they do.
   * Requires: UPDATE_INSTANCE_CONFIG permission on the instance
   * Errors: NOT_FOUND if instance does not exist
   *
   * @generated from rpc soulfire.v1.InstanceService.SetAccountMetadataEntry
   */
  setAccountMetadataEntry: {
    methodKind: "unary";
    input: typeof SetAccountMetadataEntryRequestSchema;
    output: typeof SetAccountMetadataEntryResponseSchema;
  },
  /**
   * Deletes a persistent metadata entry from a Minecraft account.
   * Requires: UPDATE_INSTANCE_CONFIG permission on the instance
   * Errors: NOT_FOUND if instance does not exist
   *
   * @generated from rpc soulfire.v1.InstanceService.DeleteAccountMetadataEntry
   */
  deleteAccountMetadataEntry: {
    methodKind: "unary";
    input: typeof DeleteAccountMetadataEntryRequestSchema;
    output: typeof DeleteAccountMetadataEntryResponseSchema;
  },
  /**
   * Gets persistent metadata for the instance itself.
   * Persistent metadata survives restarts and session changes.
   * Requires: READ_INSTANCE permission on the instance
   * Errors: NOT_FOUND if instance does not exist
   *
   * @generated from rpc soulfire.v1.InstanceService.GetInstanceMetadata
   */
  getInstanceMetadata: {
    methodKind: "unary";
    input: typeof GetInstanceMetadataRequestSchema;
    output: typeof GetInstanceMetadataResponseSchema;
  },
  /**
   * Sets a single persistent metadata entry for the instance.
   * Creates the namespace and key if they don't exist, or updates if they do.
   * Requires: UPDATE_INSTANCE_META permission on the instance
   * Errors: NOT_FOUND if instance does not exist
   *
   * @generated from rpc soulfire.v1.InstanceService.SetInstanceMetadataEntry
   */
  setInstanceMetadataEntry: {
    methodKind: "unary";
    input: typeof SetInstanceMetadataEntryRequestSchema;
    output: typeof SetInstanceMetadataEntryResponseSchema;
  },
  /**
   * Deletes a persistent metadata entry from the instance.
   * Requires: UPDATE_INSTANCE_META permission on the instance
   * Errors: NOT_FOUND if instance does not exist
   *
   * @generated from rpc soulfire.v1.InstanceService.DeleteInstanceMetadataEntry
   */
  deleteInstanceMetadataEntry: {
    methodKind: "unary";
    input: typeof DeleteInstanceMetadataEntryRequestSchema;
    output: typeof DeleteInstanceMetadataEntryResponseSchema;
  },
}> = /*@__PURE__*/
  serviceDesc(file_soulfire_instance, 0);
