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

import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
import { file_soulfire_api_docs } from "./api_docs_pb.js";
import { file_google_api_annotations } from "../google/api/annotations_pb.js";
import { file_google_api_field_behavior } from "../google/api/field_behavior_pb.js";
import type { Any, Timestamp } from "@bufbuild/protobuf/wkt";
import { file_google_protobuf_any, file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
import type { Message } from "@bufbuild/protobuf";

/**
 * Describes the file soulfire/plugin_api.proto.
 */
export const file_soulfire_plugin_api: GenFile = /*@__PURE__*/
  fileDesc(" ", [file_soulfire_api_docs, file_google_api_annotations, file_google_api_field_behavior, file_google_protobuf_any, file_google_protobuf_timestamp]);

/**
 * A dynamically registered permission owned by a plugin.
 *
 * @generated from message soulfire.v1.PluginPermissionDescriptor
 */
export type PluginPermissionDescriptor = Message<"soulfire.v1.PluginPermissionDescriptor"> & {
  /**
   * Full stable permission ID in the form plugin.<plugin-id>.<permission>.
   *
   * @generated from field: string id = 1;
   */
  id: string;

  /**
   * @generated from field: string plugin_id = 2;
   */
  pluginId: string;

  /**
   * @generated from field: soulfire.v1.PluginPermissionScope scope = 3;
   */
  scope: PluginPermissionScope;

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

  /**
   * @generated from field: string display_name = 5;
   */
  displayName: string;

  /**
   * @generated from field: string description = 6;
   */
  description: string;

  /**
   * @generated from field: soulfire.v1.PluginPermissionDefault default_grant = 7;
   */
  defaultGrant: PluginPermissionDefault;
};

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

/**
 * Metadata about one method exposed by a plugin RPC service.
 *
 * @generated from message soulfire.v1.PluginRpcMethodDescriptor
 */
export type PluginRpcMethodDescriptor = Message<"soulfire.v1.PluginRpcMethodDescriptor"> & {
  /**
   * @generated from field: string name = 1;
   */
  name: string;

  /**
   * @generated from field: string full_name = 2;
   */
  fullName: string;

  /**
   * @generated from field: string input_type_url = 3;
   */
  inputTypeUrl: string;

  /**
   * @generated from field: string output_type_url = 4;
   */
  outputTypeUrl: string;

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

  /**
   * @generated from field: bool server_streaming = 6;
   */
  serverStreaming: boolean;

  /**
   * @generated from field: repeated string permissions = 7;
   */
  permissions: string[];

  /**
   * @generated from field: string display_name = 8;
   */
  displayName: string;

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

  /**
   * @generated from field: bool exposed_to_mcp = 10;
   */
  exposedToMcp: boolean;

  /**
   * @generated from field: bool mcp_requires_confirmation = 11;
   */
  mcpRequiresConfirmation: boolean;
};

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

/**
 * Metadata about one gRPC service exposed by a plugin.
 *
 * @generated from message soulfire.v1.PluginRpcServiceDescriptor
 */
export type PluginRpcServiceDescriptor = Message<"soulfire.v1.PluginRpcServiceDescriptor"> & {
  /**
   * @generated from field: string name = 1;
   */
  name: string;

  /**
   * @generated from field: string full_name = 2;
   */
  fullName: string;

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

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

/**
 * A typed event published by a plugin.
 *
 * @generated from message soulfire.v1.PluginEventTypeDescriptor
 */
export type PluginEventTypeDescriptor = Message<"soulfire.v1.PluginEventTypeDescriptor"> & {
  /**
   * @generated from field: string type_url = 1;
   */
  typeUrl: string;

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

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

/**
 * A typed task provider contributed by a plugin.
 *
 * @generated from message soulfire.v1.PluginTaskTypeDescriptor
 */
export type PluginTaskTypeDescriptor = Message<"soulfire.v1.PluginTaskTypeDescriptor"> & {
  /**
   * @generated from field: string input_type_url = 1;
   */
  inputTypeUrl: string;

  /**
   * @generated from field: string result_type_url = 2;
   */
  resultTypeUrl: string;

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

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

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

/**
 * Optional package coordinates for a plugin's typed SDK companions.
 *
 * @generated from message soulfire.v1.PluginSdkPackages
 */
export type PluginSdkPackages = Message<"soulfire.v1.PluginSdkPackages"> & {
  /**
   * @generated from field: optional string typescript_package = 1;
   */
  typescriptPackage?: string | undefined;

  /**
   * @generated from field: optional string python_package = 2;
   */
  pythonPackage?: string | undefined;

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

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

/**
 * Complete discoverable description of a plugin API.
 *
 * @generated from message soulfire.v1.PluginApiDescriptor
 */
export type PluginApiDescriptor = Message<"soulfire.v1.PluginApiDescriptor"> & {
  /**
   * @generated from field: string plugin_id = 1;
   */
  pluginId: string;

  /**
   * @generated from field: string plugin_version = 2;
   */
  pluginVersion: string;

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

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

  /**
   * @generated from field: string license = 5;
   */
  license: string;

  /**
   * @generated from field: string website_url = 6;
   */
  websiteUrl: string;

  /**
   * @generated from field: string required_soulfire_version = 7;
   */
  requiredSoulfireVersion: string;

  /**
   * @generated from field: uint32 api_major_version = 8;
   */
  apiMajorVersion: number;

  /**
   * @generated from field: string descriptor_sha256 = 9;
   */
  descriptorSha256: string;

  /**
   * @generated from field: repeated soulfire.v1.PluginRpcServiceDescriptor services = 10;
   */
  services: PluginRpcServiceDescriptor[];

  /**
   * @generated from field: repeated soulfire.v1.PluginPermissionDescriptor permissions = 11;
   */
  permissions: PluginPermissionDescriptor[];

  /**
   * @generated from field: repeated string event_type_urls = 12;
   */
  eventTypeUrls: string[];

  /**
   * @generated from field: repeated string task_type_urls = 13;
   */
  taskTypeUrls: string[];

  /**
   * @generated from field: soulfire.v1.PluginApiStability stability = 14;
   */
  stability: PluginApiStability;

  /**
   * @generated from field: soulfire.v1.PluginSdkPackages sdk_packages = 15;
   */
  sdkPackages?: PluginSdkPackages | undefined;

  /**
   * @generated from field: optional string documentation_url = 16;
   */
  documentationUrl?: string | undefined;

  /**
   * @generated from field: optional string source_url = 17;
   */
  sourceUrl?: string | undefined;

  /**
   * @generated from field: repeated soulfire.v1.PluginEventTypeDescriptor event_types = 18;
   */
  eventTypes: PluginEventTypeDescriptor[];

  /**
   * @generated from field: repeated soulfire.v1.PluginTaskTypeDescriptor task_types = 19;
   */
  taskTypes: PluginTaskTypeDescriptor[];
};

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

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

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

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

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

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

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

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

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

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

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

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

  /**
   * When set, the server rejects a changed descriptor instead of returning it.
   *
   * @generated from field: optional string expected_sha256 = 2;
   */
  expectedSha256?: string | undefined;
};

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

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

  /**
   * @generated from field: string plugin_version = 2;
   */
  pluginVersion: string;

  /**
   * @generated from field: string descriptor_sha256 = 3;
   */
  descriptorSha256: string;

  /**
   * Serialized google.protobuf.FileDescriptorSet.
   *
   * @generated from field: bytes descriptor_set = 4;
   */
  descriptorSet: Uint8Array;
};

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

/**
 * @generated from message soulfire.v1.WatchPluginApisRequest
 */
export type WatchPluginApisRequest = Message<"soulfire.v1.WatchPluginApisRequest"> & {
  /**
   * A known catalog revision. The server always starts with a snapshot when
   * this value is zero or no longer resumable.
   *
   * @generated from field: uint64 after_revision = 1;
   */
  afterRevision: bigint;
};

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

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

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

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

  /**
   * Populated for snapshot events.
   *
   * @generated from field: repeated soulfire.v1.PluginApiDescriptor plugins = 4;
   */
  plugins: PluginApiDescriptor[];

  /**
   * Populated for removed events.
   *
   * @generated from field: optional string removed_plugin_id = 5;
   */
  removedPluginId?: string | undefined;
};

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

/**
 * Scope attached to one plugin event. An empty scope represents a global
 * event. Bot and task events also carry their containing instance.
 *
 * @generated from message soulfire.v1.PluginEventScope
 */
export type PluginEventScope = Message<"soulfire.v1.PluginEventScope"> & {
  /**
   * @generated from field: optional string instance_id = 1;
   */
  instanceId?: string | undefined;

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

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

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

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

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

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

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

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

  /**
   * The last sequence observed by the caller. Events are not retained. The
   * initial READY event sets resume_gap when replay was not possible.
   *
   * @generated from field: uint64 after_sequence = 6;
   */
  afterSequence: bigint;
};

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

/**
 * Normalized event envelope shared by typed and reflective SDK consumers.
 *
 * @generated from message soulfire.v1.PluginEvent
 */
export type PluginEvent = Message<"soulfire.v1.PluginEvent"> & {
  /**
   * @generated from field: uint64 sequence = 1;
   */
  sequence: bigint;

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

  /**
   * @generated from field: soulfire.v1.PluginEventKind kind = 3;
   */
  kind: PluginEventKind;

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

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

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

  /**
   * @generated from field: optional google.protobuf.Any payload = 7;
   */
  payload?: Any | undefined;

  /**
   * @generated from field: uint64 dropped_before = 8;
   */
  droppedBefore: bigint;

  /**
   * @generated from field: bool resume_gap = 9;
   */
  resumeGap: boolean;
};

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

/**
 * The scope in which a plugin permission is evaluated.
 *
 * @generated from enum soulfire.v1.PluginPermissionScope
 */
export enum PluginPermissionScope {
  /**
   * @generated from enum value: PLUGIN_PERMISSION_SCOPE_UNSPECIFIED = 0;
   */
  UNSPECIFIED = 0,

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

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

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

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

/**
 * Describes the enum soulfire.v1.PluginPermissionScope.
 */
export const PluginPermissionScopeSchema: GenEnum<PluginPermissionScope> = /*@__PURE__*/
  enumDesc(file_soulfire_plugin_api, 0);

/**
 * The potential impact of an operation guarded by a plugin permission.
 *
 * @generated from enum soulfire.v1.PluginPermissionRisk
 */
export enum PluginPermissionRisk {
  /**
   * @generated from enum value: PLUGIN_PERMISSION_RISK_UNSPECIFIED = 0;
   */
  UNSPECIFIED = 0,

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

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

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

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

/**
 * Describes the enum soulfire.v1.PluginPermissionRisk.
 */
export const PluginPermissionRiskSchema: GenEnum<PluginPermissionRisk> = /*@__PURE__*/
  enumDesc(file_soulfire_plugin_api, 1);

/**
 * The default grant used when no explicit user grant exists.
 *
 * @generated from enum soulfire.v1.PluginPermissionDefault
 */
export enum PluginPermissionDefault {
  /**
   * @generated from enum value: PLUGIN_PERMISSION_DEFAULT_UNSPECIFIED = 0;
   */
  UNSPECIFIED = 0,

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

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

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

/**
 * Describes the enum soulfire.v1.PluginPermissionDefault.
 */
export const PluginPermissionDefaultSchema: GenEnum<PluginPermissionDefault> = /*@__PURE__*/
  enumDesc(file_soulfire_plugin_api, 2);

/**
 * Stability level of a plugin API.
 *
 * @generated from enum soulfire.v1.PluginApiStability
 */
export enum PluginApiStability {
  /**
   * @generated from enum value: PLUGIN_API_STABILITY_UNSPECIFIED = 0;
   */
  UNSPECIFIED = 0,

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

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

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

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

/**
 * Describes the enum soulfire.v1.PluginApiStability.
 */
export const PluginApiStabilitySchema: GenEnum<PluginApiStability> = /*@__PURE__*/
  enumDesc(file_soulfire_plugin_api, 3);

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

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

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

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

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

/**
 * Describes the enum soulfire.v1.PluginApiEventKind.
 */
export const PluginApiEventKindSchema: GenEnum<PluginApiEventKind> = /*@__PURE__*/
  enumDesc(file_soulfire_plugin_api, 4);

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

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

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

/**
 * Describes the enum soulfire.v1.PluginEventKind.
 */
export const PluginEventKindSchema: GenEnum<PluginEventKind> = /*@__PURE__*/
  enumDesc(file_soulfire_plugin_api, 5);

/**
 * Discovers typed APIs registered by SoulFire server plugins.
 *
 * @generated from service soulfire.v1.PluginApiService
 */
export const PluginApiService: GenService<{
  /**
   * @generated from rpc soulfire.v1.PluginApiService.ListPluginApis
   */
  listPluginApis: {
    methodKind: "unary";
    input: typeof ListPluginApisRequestSchema;
    output: typeof ListPluginApisResponseSchema;
  },
  /**
   * @generated from rpc soulfire.v1.PluginApiService.GetPluginApi
   */
  getPluginApi: {
    methodKind: "unary";
    input: typeof GetPluginApiRequestSchema;
    output: typeof GetPluginApiResponseSchema;
  },
  /**
   * @generated from rpc soulfire.v1.PluginApiService.GetPluginDescriptorSet
   */
  getPluginDescriptorSet: {
    methodKind: "unary";
    input: typeof GetPluginDescriptorSetRequestSchema;
    output: typeof GetPluginDescriptorSetResponseSchema;
  },
  /**
   * @generated from rpc soulfire.v1.PluginApiService.WatchPluginApis
   */
  watchPluginApis: {
    methodKind: "server_streaming";
    input: typeof WatchPluginApisRequestSchema;
    output: typeof PluginApiEventSchema;
  },
  /**
   * @generated from rpc soulfire.v1.PluginApiService.WatchPluginEvents
   */
  watchPluginEvents: {
    methodKind: "server_streaming";
    input: typeof WatchPluginEventsRequestSchema;
    output: typeof PluginEventSchema;
  },
}> = /*@__PURE__*/
  serviceDesc(file_soulfire_plugin_api, 0);
