// @generated by protoc-gen-es v2.13.0 with parameter "target=ts,import_extension=js"
// @generated from file soulfire/script.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 { 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/script.proto.
 */
export const file_soulfire_script: GenFile = /*@__PURE__*/
  fileDesc(" ", [file_soulfire_api_docs, file_google_api_annotations, file_google_api_field_behavior, file_google_protobuf_timestamp, file_google_protobuf_struct]);

/**
 * Represents the 2D position of a node in the visual script editor canvas.
 * Used for rendering the node graph and preserving user layout preferences.
 *
 * @generated from message soulfire.v1.Position
 */
export type Position = Message<"soulfire.v1.Position"> & {
  /**
   * The horizontal position in canvas coordinates.
   * Positive values extend to the right.
   *
   * @generated from field: double x = 1;
   */
  x: number;

  /**
   * The vertical position in canvas coordinates.
   * Positive values extend downward.
   *
   * @generated from field: double y = 2;
   */
  y: number;
};

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

/**
 * A recursive type descriptor for generic/parameterized port types.
 * Supports simple types (NUMBER, STRING), parameterized types (List<Bot>, Map<String, Number>),
 * and type variables (T, K, V) that are resolved based on connections.
 *
 * @generated from message soulfire.v1.TypeDescriptor
 */
export type TypeDescriptor = Message<"soulfire.v1.TypeDescriptor"> & {
  /**
   * @generated from oneof soulfire.v1.TypeDescriptor.kind
   */
  kind: {
    /**
     * A simple, non-parameterized type (e.g., NUMBER, STRING, BOT).
     *
     * @generated from field: soulfire.v1.PortType simple = 1;
     */
    value: PortType;
    case: "simple";
  } | {
    /**
     * A parameterized type like List<T> or Map<K, V>.
     *
     * @generated from field: soulfire.v1.ParameterizedType parameterized = 2;
     */
    value: ParameterizedType;
    case: "parameterized";
  } | {
    /**
     * A type variable name (e.g., "T", "K", "V") that gets resolved from connections.
     * Type variables are scoped per node: each node instance has its own bindings.
     *
     * @generated from field: string type_variable = 3;
     */
    value: string;
    case: "typeVariable";
  } | { case: undefined; value?: undefined };
};

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

/**
 * A parameterized type with a base type and type arguments.
 * For example, List<Bot> has base=LIST and params=[Simple(BOT)].
 *
 * @generated from message soulfire.v1.ParameterizedType
 */
export type ParameterizedType = Message<"soulfire.v1.ParameterizedType"> & {
  /**
   * The container type (e.g., LIST, MAP).
   *
   * @generated from field: soulfire.v1.PortType base = 1;
   */
  base: PortType;

  /**
   * The type arguments (e.g., [BOT] for List<Bot>, [STRING, NUMBER] for Map<String, Number>).
   *
   * @generated from field: repeated soulfire.v1.TypeDescriptor params = 2;
   */
  params: TypeDescriptor[];
};

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

/**
 * Definition of a port (input or output) on a node type.
 * Describes the port's type, constraints, and display properties.
 *
 * @generated from message soulfire.v1.PortDefinition
 */
export type PortDefinition = Message<"soulfire.v1.PortDefinition"> & {
  /**
   * The identifier for this port.
   * Used in edge connections (source_handle/target_handle).
   * Examples: "value", "target", "bot", "exec_in", "exec_out".
   *
   * @generated from field: string id = 1;
   */
  id: string;

  /**
   * Human-readable name displayed in the UI.
   * Examples: "Target Position", "Bot", "Message".
   *
   * @generated from field: string display_name = 2;
   */
  displayName: string;

  /**
   * The data type this port accepts or produces.
   *
   * @generated from field: soulfire.v1.PortType port_type = 3;
   */
  portType: PortType;

  /**
   * Whether this input is required for the node to execute.
   * Only applicable for input ports.
   *
   * @generated from field: bool required = 4;
   */
  required: boolean;

  /**
   * Default value for this port when not connected (JSON-encoded).
   * Only applicable for input ports.
   *
   * @generated from field: optional string default_value = 5;
   */
  defaultValue?: string | undefined;

  /**
   * Optional description explaining what this port is for.
   *
   * @generated from field: string description = 6;
   */
  description: string;

  /**
   * For list ports, the type of elements in the list.
   * Only applicable when port_type is PORT_TYPE_LIST.
   *
   * @generated from field: optional soulfire.v1.PortType element_type = 7;
   */
  elementType?: PortType | undefined;

  /**
   * Whether this input accepts multiple connections (Blender-style multi-input).
   * When true, all connected values are collected into a list.
   * Visually rendered as a pill/ellipsis shaped socket.
   *
   * @generated from field: bool multi_input = 8;
   */
  multiInput: boolean;

  /**
   * For polymorphic ports, the list of accepted types.
   * If non-empty, this port can accept any of these types and will
   * adapt its behavior based on the connected type.
   *
   * @generated from field: repeated soulfire.v1.PortType accepted_types = 9;
   */
  acceptedTypes: PortType[];

  /**
   * For dynamic output ports, the ID of the input port to inherit type from.
   * Used for polymorphic nodes where output type depends on input type.
   *
   * @generated from field: string infer_type_from = 10;
   */
  inferTypeFrom: string;

  /**
   * Optional generic type descriptor for parameterized types.
   * When present, provides richer type information than the flat port_type field.
   * For example, List<Bot> or a type variable T that resolves from connections.
   *
   * @generated from field: optional soulfire.v1.TypeDescriptor type_descriptor = 11;
   */
  typeDescriptor?: TypeDescriptor | undefined;
};

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

/**
 * Complete definition of a node type.
 * Contains all metadata needed to render the node in an editor
 * and validate its connections without hardcoded client knowledge.
 *
 * @generated from message soulfire.v1.NodeTypeDefinition
 */
export type NodeTypeDefinition = Message<"soulfire.v1.NodeTypeDefinition"> & {
  /**
   * The unique type identifier for this node.
   * Examples: "trigger.on_tick", "action.pathfind", "math.add".
   *
   * @generated from field: string type = 1;
   */
  type: string;

  /**
   * Human-readable name displayed in the UI.
   * Examples: "On Tick", "Pathfind To", "Add".
   *
   * @generated from field: string display_name = 2;
   */
  displayName: string;

  /**
   * Description of what this node does.
   * Displayed in tooltips and node palettes.
   *
   * @generated from field: string description = 3;
   */
  description: string;

  /**
   * Category ID for organizing nodes in the palette.
   * References CategoryDefinition.id from GetNodeTypesResponse.
   * Examples: "triggers", "actions", "math", "logic", "flow".
   *
   * @generated from field: string category = 4;
   */
  category: string;

  /**
   * Whether this is a trigger node (entry point for execution).
   * Trigger nodes have no execution input and start script flows.
   *
   * @generated from field: bool is_trigger = 5;
   */
  isTrigger: boolean;

  /**
   * The input ports for this node type.
   * Includes both data inputs and execution inputs.
   *
   * @generated from field: repeated soulfire.v1.PortDefinition inputs = 6;
   */
  inputs: PortDefinition[];

  /**
   * The output ports for this node type.
   * Includes both data outputs and execution outputs.
   *
   * @generated from field: repeated soulfire.v1.PortDefinition outputs = 7;
   */
  outputs: PortDefinition[];

  /**
   * Optional icon identifier for rendering.
   * Can be an icon name or emoji.
   *
   * @generated from field: string icon = 8;
   */
  icon: string;

  /**
   * Optional color hint for the node (hex color code).
   * Used for visual distinction between node categories.
   *
   * @generated from field: string color = 9;
   */
  color: string;

  /**
   * Keywords for searching/filtering nodes in the palette.
   *
   * @generated from field: repeated string keywords = 10;
   */
  keywords: string[];

  /**
   * Whether this node is deprecated and should be avoided.
   *
   * @generated from field: bool deprecated = 11;
   */
  deprecated: boolean;

  /**
   * If deprecated, message explaining what to use instead.
   *
   * @generated from field: string deprecation_message = 12;
   */
  deprecationMessage: string;

  /**
   * Whether this is a layout node (reroute, frame, etc.).
   * Layout nodes have special minimal rendering and don't execute logic.
   *
   * @generated from field: bool is_layout_node = 13;
   */
  isLayoutNode: boolean;

  /**
   * Whether this node can be muted (bypassed during execution).
   * When muted, inputs pass through to outputs unchanged.
   *
   * @generated from field: bool supports_muting = 14;
   */
  supportsMuting: boolean;

  /**
   * Whether this node supports inline preview of its output.
   *
   * @generated from field: bool supports_preview = 15;
   */
  supportsPreview: boolean;

  /**
   * Whether this node is expensive (slow, may block).
   * Used for visual warnings in tick-path analysis.
   *
   * @generated from field: bool is_expensive = 16;
   */
  isExpensive: boolean;
};

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

/**
 * Represents a single node in the visual script graph.
 * Nodes are the building blocks of scripts, each performing a specific action
 * or computation when executed.
 *
 * @generated from message soulfire.v1.ScriptNode
 */
export type ScriptNode = Message<"soulfire.v1.ScriptNode"> & {
  /**
   * Unique identifier for this node within the script.
   * Used to reference this node in edges and during execution tracking.
   * Format: UUID string.
   *
   * @generated from field: string id = 1;
   */
  id: string;

  /**
   * The type identifier for this node, determining its behavior and available ports.
   * Examples: "trigger.on_chat", "action.send_message", "control.delay", "logic.condition".
   *
   * @generated from field: string type = 2;
   */
  type: string;

  /**
   * The visual position of this node on the editor canvas.
   * Persisted to maintain the user's layout when reopening the script.
   *
   * @generated from field: soulfire.v1.Position position = 3;
   */
  position?: Position | undefined;

  /**
   * Configuration data for this node instance.
   * Contains node-specific settings and parameter values.
   * The structure depends on the node type.
   *
   * @generated from field: map<string, google.protobuf.Value> data = 4;
   */
  data: { [key: string]: Value };

  /**
   * Whether this node is muted (bypassed during execution).
   * When muted, the node passes inputs directly to outputs without processing.
   * Visually shown as grayed out with pass-through indicator.
   *
   * @generated from field: bool muted = 5;
   */
  muted: boolean;

  /**
   * Whether this node is collapsed (showing only header).
   * Collapsed nodes still function normally but take less visual space.
   *
   * @generated from field: bool collapsed = 6;
   */
  collapsed: boolean;

  /**
   * For frame nodes: the width of the frame.
   *
   * @generated from field: optional double width = 7;
   */
  width?: number | undefined;

  /**
   * For frame nodes: the height of the frame.
   *
   * @generated from field: optional double height = 8;
   */
  height?: number | undefined;

  /**
   * For frame nodes: IDs of nodes contained within this frame.
   * Updated automatically based on node positions.
   *
   * @generated from field: repeated string contained_nodes = 9;
   */
  containedNodes: string[];

  /**
   * Optional label override for this node instance.
   * If set, displayed instead of the node type's default label.
   *
   * @generated from field: string label = 10;
   */
  label: string;

  /**
   * For reroute nodes: the resolved port type based on connections.
   * Dynamically updated when connections change.
   *
   * @generated from field: optional soulfire.v1.PortType resolved_type = 11;
   */
  resolvedType?: PortType | undefined;

  /**
   * Parent frame node ID, if this node is inside a frame.
   *
   * @generated from field: string parent_frame_id = 12;
   */
  parentFrameId: string;
};

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

/**
 * Represents a connection between two nodes in the visual script graph.
 * Edges define how execution flows and how data passes between nodes.
 *
 * @generated from message soulfire.v1.ScriptEdge
 */
export type ScriptEdge = Message<"soulfire.v1.ScriptEdge"> & {
  /**
   * Unique identifier for this edge within the script.
   * Format: UUID string.
   *
   * @generated from field: string id = 1;
   */
  id: string;

  /**
   * The ID of the source node where this edge originates.
   * Must reference a valid node ID in the script's nodes list.
   *
   * @generated from field: string source = 2;
   */
  source: string;

  /**
   * The handle/port identifier on the source node.
   * Identifies which output port of the source node this edge connects from.
   * Examples: "exec_out", "value", "true", "false".
   *
   * @generated from field: string source_handle = 3;
   */
  sourceHandle: string;

  /**
   * The ID of the target node where this edge terminates.
   * Must reference a valid node ID in the script's nodes list.
   *
   * @generated from field: string target = 4;
   */
  target: string;

  /**
   * The handle/port identifier on the target node.
   * Identifies which input port of the target node this edge connects to.
   * Examples: "exec_in", "message", "condition".
   *
   * @generated from field: string target_handle = 5;
   */
  targetHandle: string;

  /**
   * The type of this edge, determining whether it carries execution flow or data.
   *
   * @generated from field: soulfire.v1.EdgeType edge_type = 6;
   */
  edgeType: EdgeType;

  /**
   * Explicit order for edges targeting the same multi-input port.
   * Lower values are materialized first. Ignored for non-multi-input ports.
   *
   * @generated from field: optional int32 order = 7;
   */
  order?: number | undefined;
};

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

/**
 * Complete data structure representing a visual script.
 * Contains all nodes, edges, and metadata needed to render and execute the script.
 *
 * @generated from message soulfire.v1.ScriptData
 */
export type ScriptData = Message<"soulfire.v1.ScriptData"> & {
  /**
   * Unique identifier for this script.
   * Format: UUID string.
   *
   * @generated from field: string id = 1;
   */
  id: string;

  /**
   * Human-readable name for the script.
   * Displayed in the UI and used for identification.
   *
   * @generated from field: string name = 2;
   */
  name: string;

  /**
   * Optional description explaining what the script does.
   * Displayed in script listings and detail views.
   *
   * @generated from field: string description = 3;
   */
  description: string;

  /**
   * The list of nodes that make up this script's graph.
   * Nodes are executed based on execution edge connections.
   *
   * @generated from field: repeated soulfire.v1.ScriptNode nodes = 4;
   */
  nodes: ScriptNode[];

  /**
   * The list of edges connecting nodes in this script.
   * Defines both execution flow and data transfer between nodes.
   *
   * @generated from field: repeated soulfire.v1.ScriptEdge edges = 5;
   */
  edges: ScriptEdge[];

  /**
   * The instance this script belongs to.
   * Scripts are always associated with a specific instance.
   * Format: UUID string.
   *
   * @generated from field: string instance_id = 7;
   */
  instanceId: string;

  /**
   * Whether this script is paused (not running).
   * Scripts run by default. When paused, they won't be started on server startup
   * or when created/updated.
   *
   * @generated from field: bool paused = 8;
   */
  paused: boolean;

  /**
   * Optional resource quotas for this script.
   *
   * @generated from field: soulfire.v1.ScriptQuotas quotas = 9;
   */
  quotas?: ScriptQuotas | undefined;
};

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

/**
 * Resource quotas for limiting script execution.
 * All fields are optional; unset fields use server defaults.
 *
 * @generated from message soulfire.v1.ScriptQuotas
 */
export type ScriptQuotas = Message<"soulfire.v1.ScriptQuotas"> & {
  /**
   * Maximum number of node executions per trigger invocation.
   *
   * @generated from field: optional int64 max_execution_count = 1;
   */
  maxExecutionCount?: bigint | undefined;

  /**
   * Maximum wall-clock time for a single trigger execution in milliseconds.
   *
   * @generated from field: optional int64 max_execution_time_ms = 2;
   */
  maxExecutionTimeMs?: bigint | undefined;

  /**
   * Maximum number of concurrent trigger invocations.
   *
   * @generated from field: optional int32 max_concurrent_triggers = 3;
   */
  maxConcurrentTriggers?: number | undefined;

  /**
   * Maximum number of entries in the script's state store.
   *
   * @generated from field: optional int64 max_state_store_entries = 4;
   */
  maxStateStoreEntries?: bigint | undefined;

  /**
   * When true, disables per-node and data edge timeouts entirely.
   *
   * @generated from field: bool disable_timeouts = 5;
   */
  disableTimeouts: boolean;
};

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

/**
 * Summary information about a script for listing purposes.
 * Contains metadata without the full node graph to reduce payload size.
 *
 * @generated from message soulfire.v1.ScriptInfo
 */
export type ScriptInfo = Message<"soulfire.v1.ScriptInfo"> & {
  /**
   * Unique identifier for this script.
   * Format: UUID string.
   *
   * @generated from field: string id = 1;
   */
  id: string;

  /**
   * Human-readable name for the script.
   *
   * @generated from field: string name = 2;
   */
  name: string;

  /**
   * Optional description of what the script does.
   *
   * @generated from field: string description = 3;
   */
  description: string;

  /**
   * The instance this script belongs to.
   * Format: UUID string.
   *
   * @generated from field: string instance_id = 5;
   */
  instanceId: string;

  /**
   * Timestamp when the script was first created.
   *
   * @generated from field: google.protobuf.Timestamp created_at = 6;
   */
  createdAt?: Timestamp | undefined;

  /**
   * Timestamp when the script was last modified.
   *
   * @generated from field: google.protobuf.Timestamp updated_at = 7;
   */
  updatedAt?: Timestamp | undefined;

  /**
   * Whether this script is paused (not running).
   *
   * @generated from field: bool paused = 8;
   */
  paused: boolean;
};

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

/**
 * Runtime status information for a script.
 * Provides information about current activation state and statistics.
 *
 * @generated from message soulfire.v1.ScriptStatus
 */
export type ScriptStatus = Message<"soulfire.v1.ScriptStatus"> & {
  /**
   * The script this status applies to.
   * Format: UUID string.
   *
   * @generated from field: string script_id = 1;
   */
  scriptId: string;

  /**
   * Whether the script is currently active (listening for triggers).
   *
   * @generated from field: bool is_active = 2;
   */
  isActive: boolean;

  /**
   * The ID of the currently executing node, if any.
   * Only present when a node is actively executing.
   *
   * @generated from field: optional string active_node_id = 3;
   */
  activeNodeId?: string | undefined;

  /**
   * The total number of times this script has been activated.
   * Incremented each time ActivateScript is called.
   *
   * @generated from field: int64 activation_count = 4;
   */
  activationCount: bigint;
};

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

/**
 * A single log entry generated during script execution.
 * Provides detailed information about script operations for debugging and monitoring.
 *
 * @generated from message soulfire.v1.ScriptLogEntry
 */
export type ScriptLogEntry = Message<"soulfire.v1.ScriptLogEntry"> & {
  /**
   * The script that generated this log entry.
   * Format: UUID string.
   *
   * @generated from field: string script_id = 1;
   */
  scriptId: string;

  /**
   * The node that generated this log entry, if applicable.
   * May be empty for script-level log entries.
   *
   * @generated from field: string node_id = 2;
   */
  nodeId: string;

  /**
   * The severity level of this log entry.
   *
   * @generated from field: soulfire.v1.LogLevel level = 3;
   */
  level: LogLevel;

  /**
   * The log message content.
   *
   * @generated from field: string message = 4;
   */
  message: string;

  /**
   * When this log entry was created.
   *
   * @generated from field: google.protobuf.Timestamp timestamp = 5;
   */
  timestamp?: Timestamp | undefined;
};

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

/**
 * Event emitted when a node begins execution.
 *
 * @generated from message soulfire.v1.NodeStarted
 */
export type NodeStarted = Message<"soulfire.v1.NodeStarted"> & {
  /**
   * The ID of the node that started executing.
   *
   * @generated from field: string node_id = 1;
   */
  nodeId: string;

  /**
   * When the node started execution.
   *
   * @generated from field: google.protobuf.Timestamp timestamp = 2;
   */
  timestamp?: Timestamp | undefined;
};

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

/**
 * Event emitted when a node completes execution successfully.
 *
 * @generated from message soulfire.v1.NodeCompleted
 */
export type NodeCompleted = Message<"soulfire.v1.NodeCompleted"> & {
  /**
   * The ID of the node that completed execution.
   *
   * @generated from field: string node_id = 1;
   */
  nodeId: string;

  /**
   * The output values produced by the node.
   * Keys are output port names, values are the data produced.
   *
   * @generated from field: map<string, google.protobuf.Value> outputs = 2;
   */
  outputs: { [key: string]: Value };

  /**
   * When the node completed execution.
   *
   * @generated from field: google.protobuf.Timestamp timestamp = 3;
   */
  timestamp?: Timestamp | undefined;

  /**
   * Execution time in nanoseconds for profiling.
   *
   * @generated from field: int64 execution_time_nanos = 4;
   */
  executionTimeNanos: bigint;
};

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

/**
 * Execution statistics emitted when a trigger chain completes.
 *
 * @generated from message soulfire.v1.ExecutionStats
 */
export type ExecutionStats = Message<"soulfire.v1.ExecutionStats"> & {
  /**
   * Total number of node executions in this chain.
   *
   * @generated from field: int64 node_count = 1;
   */
  nodeCount: bigint;

  /**
   * Maximum allowed node executions.
   *
   * @generated from field: int64 max_count = 2;
   */
  maxCount: bigint;
};

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

/**
 * Event emitted when a node encounters an error during execution.
 *
 * @generated from message soulfire.v1.NodeError
 */
export type NodeError = Message<"soulfire.v1.NodeError"> & {
  /**
   * The ID of the node that encountered the error.
   *
   * @generated from field: string node_id = 1;
   */
  nodeId: string;

  /**
   * A description of what went wrong.
   *
   * @generated from field: string error_message = 2;
   */
  errorMessage: string;

  /**
   * When the error occurred.
   *
   * @generated from field: google.protobuf.Timestamp timestamp = 3;
   */
  timestamp?: Timestamp | undefined;
};

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

/**
 * Event emitted when a script logs a message (e.g., from Print node).
 *
 * @generated from message soulfire.v1.ScriptLog
 */
export type ScriptLog = Message<"soulfire.v1.ScriptLog"> & {
  /**
   * The ID of the node that produced the log (if applicable).
   *
   * @generated from field: optional string node_id = 1;
   */
  nodeId?: string | undefined;

  /**
   * The log level (debug, info, warn, error).
   *
   * @generated from field: string level = 2;
   */
  level: string;

  /**
   * The log message content.
   *
   * @generated from field: string message = 3;
   */
  message: string;

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

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

/**
 * Event emitted when a trigger fires and begins executing a node chain.
 * Note: Scripts are reactive - this indicates a trigger event occurred,
 * not that the script "started running" in the traditional sense.
 *
 * @generated from message soulfire.v1.ScriptStarted
 */
export type ScriptStarted = Message<"soulfire.v1.ScriptStarted"> & {
  /**
   * The ID of the script containing the triggered chain.
   *
   * @generated from field: string script_id = 1;
   */
  scriptId: string;

  /**
   * When the trigger fired and execution began.
   *
   * @generated from field: google.protobuf.Timestamp timestamp = 2;
   */
  timestamp?: Timestamp | undefined;
};

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

/**
 * Event emitted when a triggered node chain finishes executing.
 * Note: This indicates one trigger chain completed, not that the script
 * is done - the script remains active and will respond to future triggers.
 *
 * @generated from message soulfire.v1.ScriptCompleted
 */
export type ScriptCompleted = Message<"soulfire.v1.ScriptCompleted"> & {
  /**
   * The ID of the script that completed the chain.
   *
   * @generated from field: string script_id = 1;
   */
  scriptId: string;

  /**
   * Whether the chain completed successfully without errors.
   *
   * @generated from field: bool success = 2;
   */
  success: boolean;

  /**
   * When the chain completed execution.
   *
   * @generated from field: google.protobuf.Timestamp timestamp = 3;
   */
  timestamp?: Timestamp | undefined;
};

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

/**
 * A structured validation diagnostic with node/edge context and severity.
 *
 * @generated from message soulfire.v1.ValidationDiagnostic
 */
export type ValidationDiagnostic = Message<"soulfire.v1.ValidationDiagnostic"> & {
  /**
   * The node related to this diagnostic, or empty for graph-level issues.
   *
   * @generated from field: string node_id = 1;
   */
  nodeId: string;

  /**
   * A composite edge key related to this diagnostic, or empty.
   *
   * @generated from field: string edge_id = 2;
   */
  edgeId: string;

  /**
   * Human-readable description of the issue.
   *
   * @generated from field: string message = 3;
   */
  message: string;

  /**
   * Severity level of this diagnostic.
   *
   * @generated from field: soulfire.v1.DiagnosticSeverity severity = 4;
   */
  severity: DiagnosticSeverity;
};

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

/**
 * Union type for all script execution events.
 * Streamed to clients during script activation to provide real-time feedback.
 * Events represent individual trigger chain executions, not script lifecycle.
 *
 * @generated from message soulfire.v1.ScriptEvent
 */
export type ScriptEvent = Message<"soulfire.v1.ScriptEvent"> & {
  /**
   * The specific event that occurred.
   *
   * @generated from oneof soulfire.v1.ScriptEvent.event
   */
  event: {
    /**
     * A node started executing.
     *
     * @generated from field: soulfire.v1.NodeStarted node_started = 1;
     */
    value: NodeStarted;
    case: "nodeStarted";
  } | {
    /**
     * A node completed execution successfully.
     *
     * @generated from field: soulfire.v1.NodeCompleted node_completed = 2;
     */
    value: NodeCompleted;
    case: "nodeCompleted";
  } | {
    /**
     * A node encountered an error.
     *
     * @generated from field: soulfire.v1.NodeError node_error = 3;
     */
    value: NodeError;
    case: "nodeError";
  } | {
    /**
     * A trigger chain finished executing.
     *
     * @generated from field: soulfire.v1.ScriptCompleted script_completed = 4;
     */
    value: ScriptCompleted;
    case: "scriptCompleted";
  } | {
    /**
     * A trigger fired and began executing a chain.
     *
     * @generated from field: soulfire.v1.ScriptStarted script_started = 5;
     */
    value: ScriptStarted;
    case: "scriptStarted";
  } | {
    /**
     * A script logged a message.
     *
     * @generated from field: soulfire.v1.ScriptLog script_log = 6;
     */
    value: ScriptLog;
    case: "scriptLog";
  } | {
    /**
     * Execution statistics for a completed trigger chain.
     *
     * @generated from field: soulfire.v1.ExecutionStats execution_stats = 7;
     */
    value: ExecutionStats;
    case: "executionStats";
  } | { case: undefined; value?: undefined };
};

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

/**
 * Request to create a new script.
 *
 * @generated from message soulfire.v1.CreateScriptRequest
 */
export type CreateScriptRequest = Message<"soulfire.v1.CreateScriptRequest"> & {
  /**
   * The instance to create the script in.
   * Format: UUID string.
   *
   * @generated from field: string instance_id = 1;
   */
  instanceId: string;

  /**
   * The human-readable name for the script.
   *
   * @generated from field: string name = 2;
   */
  name: string;

  /**
   * Optional description of what the script does.
   *
   * @generated from field: string description = 3;
   */
  description: string;

  /**
   * Initial nodes for the script graph.
   * Can be empty to create a blank script.
   *
   * @generated from field: repeated soulfire.v1.ScriptNode nodes = 5;
   */
  nodes: ScriptNode[];

  /**
   * Initial edges for the script graph.
   * Can be empty to create a blank script.
   *
   * @generated from field: repeated soulfire.v1.ScriptEdge edges = 6;
   */
  edges: ScriptEdge[];

  /**
   * Whether the script should be created in paused state.
   * If false (default), the script starts running immediately after creation.
   *
   * @generated from field: bool paused = 7;
   */
  paused: boolean;

  /**
   * Optional resource quotas for this script.
   *
   * @generated from field: soulfire.v1.ScriptQuotas quotas = 8;
   */
  quotas?: ScriptQuotas | undefined;
};

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

/**
 * Response after successfully creating a script.
 *
 * @generated from message soulfire.v1.CreateScriptResponse
 */
export type CreateScriptResponse = Message<"soulfire.v1.CreateScriptResponse"> & {
  /**
   * The complete script data including the generated ID.
   *
   * @generated from field: soulfire.v1.ScriptData script = 1;
   */
  script?: ScriptData | undefined;

  /**
   * Validation diagnostics (warnings) from building the script graph.
   *
   * @generated from field: repeated soulfire.v1.ValidationDiagnostic diagnostics = 2;
   */
  diagnostics: ValidationDiagnostic[];
};

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

/**
 * Request to retrieve a specific script by ID.
 *
 * @generated from message soulfire.v1.GetScriptRequest
 */
export type GetScriptRequest = Message<"soulfire.v1.GetScriptRequest"> & {
  /**
   * The instance containing the script.
   * Format: UUID string.
   *
   * @generated from field: string instance_id = 1;
   */
  instanceId: string;

  /**
   * The ID of the script to retrieve.
   * Format: UUID string.
   *
   * @generated from field: string script_id = 2;
   */
  scriptId: string;
};

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

/**
 * Response containing the requested script.
 *
 * @generated from message soulfire.v1.GetScriptResponse
 */
export type GetScriptResponse = Message<"soulfire.v1.GetScriptResponse"> & {
  /**
   * The complete script data including all nodes and edges.
   *
   * @generated from field: soulfire.v1.ScriptData script = 1;
   */
  script?: ScriptData | undefined;
};

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

/**
 * Request to update an existing script.
 *
 * @generated from message soulfire.v1.UpdateScriptRequest
 */
export type UpdateScriptRequest = Message<"soulfire.v1.UpdateScriptRequest"> & {
  /**
   * The instance containing the script.
   * Format: UUID string.
   *
   * @generated from field: string instance_id = 1;
   */
  instanceId: string;

  /**
   * The ID of the script to update.
   * Format: UUID string.
   *
   * @generated from field: string script_id = 2;
   */
  scriptId: string;

  /**
   * Updated name for the script.
   * If not set, the name remains unchanged.
   *
   * @generated from field: optional string name = 3;
   */
  name?: string | undefined;

  /**
   * Updated description for the script.
   * If not set, the description remains unchanged.
   *
   * @generated from field: optional string description = 4;
   */
  description?: string | undefined;

  /**
   * Updated list of nodes.
   * If provided, replaces the entire node list.
   * If not provided, nodes remain unchanged.
   *
   * @generated from field: repeated soulfire.v1.ScriptNode nodes = 6;
   */
  nodes: ScriptNode[];

  /**
   * Updated list of edges.
   * If provided, replaces the entire edge list.
   * If not provided, edges remain unchanged.
   *
   * @generated from field: repeated soulfire.v1.ScriptEdge edges = 7;
   */
  edges: ScriptEdge[];

  /**
   * Whether the nodes field should be updated (allows setting to empty list).
   *
   * @generated from field: bool update_nodes = 8;
   */
  updateNodes: boolean;

  /**
   * Whether the edges field should be updated (allows setting to empty list).
   *
   * @generated from field: bool update_edges = 9;
   */
  updateEdges: boolean;

  /**
   * Updated paused setting.
   * If not set, the paused setting remains unchanged.
   * If set to false and script was paused, the script will be restarted.
   *
   * @generated from field: optional bool paused = 10;
   */
  paused?: boolean | undefined;

  /**
   * Updated resource quotas for this script.
   *
   * @generated from field: soulfire.v1.ScriptQuotas quotas = 11;
   */
  quotas?: ScriptQuotas | undefined;

  /**
   * Whether the quotas field should be updated (allows clearing quotas).
   *
   * @generated from field: bool update_quotas = 12;
   */
  updateQuotas: boolean;
};

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

/**
 * Response after successfully updating a script.
 *
 * @generated from message soulfire.v1.UpdateScriptResponse
 */
export type UpdateScriptResponse = Message<"soulfire.v1.UpdateScriptResponse"> & {
  /**
   * The updated script data.
   *
   * @generated from field: soulfire.v1.ScriptData script = 1;
   */
  script?: ScriptData | undefined;

  /**
   * Validation diagnostics (warnings) from building the script graph.
   *
   * @generated from field: repeated soulfire.v1.ValidationDiagnostic diagnostics = 2;
   */
  diagnostics: ValidationDiagnostic[];
};

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

/**
 * Request to delete a script.
 *
 * @generated from message soulfire.v1.DeleteScriptRequest
 */
export type DeleteScriptRequest = Message<"soulfire.v1.DeleteScriptRequest"> & {
  /**
   * The instance containing the script.
   * Format: UUID string.
   *
   * @generated from field: string instance_id = 1;
   */
  instanceId: string;

  /**
   * The ID of the script to delete.
   * Format: UUID string.
   *
   * @generated from field: string script_id = 2;
   */
  scriptId: string;
};

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

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

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

/**
 * Request to list all scripts in an instance.
 *
 * @generated from message soulfire.v1.ListScriptsRequest
 */
export type ListScriptsRequest = Message<"soulfire.v1.ListScriptsRequest"> & {
  /**
   * The instance to list scripts from.
   * Format: UUID string.
   *
   * @generated from field: string instance_id = 1;
   */
  instanceId: string;
};

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

/**
 * Response containing the list of scripts.
 *
 * @generated from message soulfire.v1.ListScriptsResponse
 */
export type ListScriptsResponse = Message<"soulfire.v1.ListScriptsResponse"> & {
  /**
   * Summary information for each script in the instance.
   * Does not include full node/edge data to reduce payload size.
   *
   * @generated from field: repeated soulfire.v1.ScriptInfo scripts = 1;
   */
  scripts: ScriptInfo[];
};

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

/**
 * Request to activate a script (register its event listeners).
 *
 * @generated from message soulfire.v1.ActivateScriptRequest
 */
export type ActivateScriptRequest = Message<"soulfire.v1.ActivateScriptRequest"> & {
  /**
   * The instance containing the script.
   * Format: UUID string.
   *
   * @generated from field: string instance_id = 1;
   */
  instanceId: string;

  /**
   * The ID of the script to activate.
   * Format: UUID string.
   *
   * @generated from field: string script_id = 2;
   */
  scriptId: string;
};

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

/**
 * Request to deactivate an active script.
 *
 * @generated from message soulfire.v1.DeactivateScriptRequest
 */
export type DeactivateScriptRequest = Message<"soulfire.v1.DeactivateScriptRequest"> & {
  /**
   * The instance containing the script.
   * Format: UUID string.
   *
   * @generated from field: string instance_id = 1;
   */
  instanceId: string;

  /**
   * The ID of the script to deactivate.
   * Format: UUID string.
   *
   * @generated from field: string script_id = 2;
   */
  scriptId: string;
};

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

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

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

/**
 * Request to get the execution status of a script.
 *
 * @generated from message soulfire.v1.GetScriptStatusRequest
 */
export type GetScriptStatusRequest = Message<"soulfire.v1.GetScriptStatusRequest"> & {
  /**
   * The instance containing the script.
   * Format: UUID string.
   *
   * @generated from field: string instance_id = 1;
   */
  instanceId: string;

  /**
   * The ID of the script to check.
   * Format: UUID string.
   *
   * @generated from field: string script_id = 2;
   */
  scriptId: string;
};

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

/**
 * Response containing the script's execution status.
 *
 * @generated from message soulfire.v1.GetScriptStatusResponse
 */
export type GetScriptStatusResponse = Message<"soulfire.v1.GetScriptStatusResponse"> & {
  /**
   * The current status of the script.
   *
   * @generated from field: soulfire.v1.ScriptStatus status = 1;
   */
  status?: ScriptStatus | undefined;
};

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

/**
 * Request to subscribe to log entries from a script.
 *
 * @generated from message soulfire.v1.SubscribeScriptLogsRequest
 */
export type SubscribeScriptLogsRequest = Message<"soulfire.v1.SubscribeScriptLogsRequest"> & {
  /**
   * The instance containing the script.
   * Format: UUID string.
   *
   * @generated from field: string instance_id = 1;
   */
  instanceId: string;

  /**
   * The ID of the script to receive logs from.
   * Format: UUID string.
   *
   * @generated from field: string script_id = 2;
   */
  scriptId: string;

  /**
   * Minimum log level to receive.
   * Only log entries at this level or higher severity will be streamed.
   *
   * @generated from field: soulfire.v1.LogLevel min_level = 3;
   */
  minLevel: LogLevel;
};

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

/**
 * Request to get all available node types.
 * This enables clients to render nodes without hardcoded knowledge.
 *
 * @generated from message soulfire.v1.GetNodeTypesRequest
 */
export type GetNodeTypesRequest = Message<"soulfire.v1.GetNodeTypesRequest"> & {
  /**
   * Optional filter by category ID (references CategoryDefinition.id).
   * Examples: "triggers", "actions", "math".
   * If empty, returns all node types.
   *
   * @generated from field: optional string category = 1;
   */
  category?: string | undefined;

  /**
   * Whether to include deprecated node types.
   * Default is false.
   *
   * @generated from field: bool include_deprecated = 2;
   */
  includeDeprecated: boolean;
};

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

/**
 * Definition of a node category for organizing the node palette.
 *
 * @generated from message soulfire.v1.CategoryDefinition
 */
export type CategoryDefinition = Message<"soulfire.v1.CategoryDefinition"> & {
  /**
   * The unique identifier for this category.
   * Examples: "triggers", "actions", "math", "logic".
   *
   * @generated from field: string id = 1;
   */
  id: string;

  /**
   * Human-readable name displayed in the UI.
   * Examples: "Triggers", "Actions", "Math", "Logic".
   *
   * @generated from field: string display_name = 2;
   */
  displayName: string;

  /**
   * Icon identifier for the category.
   * Examples: "zap", "play", "calculator", "git-branch".
   *
   * @generated from field: string icon = 3;
   */
  icon: string;

  /**
   * Optional description of this category.
   *
   * @generated from field: string description = 4;
   */
  description: string;

  /**
   * Sort order for displaying categories (lower = earlier).
   *
   * @generated from field: int32 sort_order = 5;
   */
  sortOrder: number;
};

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

/**
 * Response containing all available node types.
 *
 * @generated from message soulfire.v1.GetNodeTypesResponse
 */
export type GetNodeTypesResponse = Message<"soulfire.v1.GetNodeTypesResponse"> & {
  /**
   * List of all node type definitions.
   * Clients can use this to render any node and validate connections.
   *
   * @generated from field: repeated soulfire.v1.NodeTypeDefinition node_types = 1;
   */
  nodeTypes: NodeTypeDefinition[];

  /**
   * List of all categories with their metadata.
   * Useful for building category filters and palette sections in the UI.
   *
   * @generated from field: repeated soulfire.v1.CategoryDefinition categories = 2;
   */
  categories: CategoryDefinition[];

  /**
   * Metadata for each port type including colors and compatibility.
   * Clients should use this instead of hardcoded port type info.
   *
   * @generated from field: repeated soulfire.v1.PortTypeMetadata port_type_metadata = 3;
   */
  portTypeMetadata: PortTypeMetadata[];
};

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

/**
 * Metadata for a port type, enabling data-driven port rendering.
 *
 * @generated from message soulfire.v1.PortTypeMetadata
 */
export type PortTypeMetadata = Message<"soulfire.v1.PortTypeMetadata"> & {
  /**
   * The port type this metadata applies to.
   *
   * @generated from field: soulfire.v1.PortType port_type = 1;
   */
  portType: PortType;

  /**
   * Display color for this port type (hex color code, e.g., "#22c55e").
   *
   * @generated from field: string color = 2;
   */
  color: string;

  /**
   * Human-readable name for this port type.
   *
   * @generated from field: string display_name = 3;
   */
  displayName: string;

  /**
   * List of port types that can be implicitly converted to this type.
   * Used for connection validation. Empty means only exact matches allowed.
   *
   * @generated from field: repeated soulfire.v1.PortType compatible_from = 4;
   */
  compatibleFrom: PortType[];

  /**
   * Shape of the handle for this port type in the visual editor.
   *
   * @generated from field: soulfire.v1.HandleShape handle_shape = 5;
   */
  handleShape: HandleShape;

  /**
   * Visual style for edges of this port type.
   *
   * @generated from field: soulfire.v1.EdgeStyle edge_style = 6;
   */
  edgeStyle: EdgeStyle;
};

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

/**
 * Request to get Minecraft registry data for autocomplete and validation.
 *
 * @generated from message soulfire.v1.GetRegistryDataRequest
 */
export type GetRegistryDataRequest = Message<"soulfire.v1.GetRegistryDataRequest"> & {
  /**
   * Optional: specific registry to fetch. If empty, returns all registries.
   * Valid values: "blocks", "entities", "items", "biomes"
   *
   * @generated from field: optional string registry = 1;
   */
  registry?: string | undefined;
};

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

/**
 * A single registry entry (block, entity, item, or biome).
 *
 * @generated from message soulfire.v1.RegistryEntry
 */
export type RegistryEntry = Message<"soulfire.v1.RegistryEntry"> & {
  /**
   * The namespaced identifier (e.g., "minecraft:diamond_ore").
   *
   * @generated from field: string id = 1;
   */
  id: string;

  /**
   * Human-readable display name.
   *
   * @generated from field: string display_name = 2;
   */
  displayName: string;

  /**
   * Optional icon or texture identifier.
   *
   * @generated from field: string icon = 3;
   */
  icon: string;

  /**
   * Optional category/group for organizing in UI.
   *
   * @generated from field: string category = 4;
   */
  category: string;
};

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

/**
 * Request to validate a script graph without saving it.
 *
 * @generated from message soulfire.v1.ValidateScriptRequest
 */
export type ValidateScriptRequest = Message<"soulfire.v1.ValidateScriptRequest"> & {
  /**
   * The instance context for validation.
   *
   * @generated from field: string instance_id = 1;
   */
  instanceId: string;

  /**
   * The nodes to validate.
   *
   * @generated from field: repeated soulfire.v1.ScriptNode nodes = 2;
   */
  nodes: ScriptNode[];

  /**
   * The edges to validate.
   *
   * @generated from field: repeated soulfire.v1.ScriptEdge edges = 3;
   */
  edges: ScriptEdge[];
};

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

/**
 * Response containing validation diagnostics.
 *
 * @generated from message soulfire.v1.ValidateScriptResponse
 */
export type ValidateScriptResponse = Message<"soulfire.v1.ValidateScriptResponse"> & {
  /**
   * All diagnostics (errors and warnings) for the script graph.
   *
   * @generated from field: repeated soulfire.v1.ValidationDiagnostic diagnostics = 1;
   */
  diagnostics: ValidationDiagnostic[];
};

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

/**
 * Request to dry-run a script from a specific trigger node with mock inputs.
 *
 * @generated from message soulfire.v1.DryRunScriptRequest
 */
export type DryRunScriptRequest = Message<"soulfire.v1.DryRunScriptRequest"> & {
  /**
   * The instance ID for context (may be used for registry data).
   *
   * @generated from field: string instance_id = 1;
   */
  instanceId: string;

  /**
   * The ID of the saved script to dry-run.
   *
   * @generated from field: string script_id = 2;
   */
  scriptId: string;

  /**
   * The trigger node ID to start execution from.
   *
   * @generated from field: string trigger_node_id = 3;
   */
  triggerNodeId: string;

  /**
   * Mock input values for the trigger (port ID -> value).
   *
   * @generated from field: map<string, google.protobuf.Value> mock_inputs = 4;
   */
  mockInputs: { [key: string]: Value };
};

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

/**
 * Response containing Minecraft registry data.
 *
 * @generated from message soulfire.v1.GetRegistryDataResponse
 */
export type GetRegistryDataResponse = Message<"soulfire.v1.GetRegistryDataResponse"> & {
  /**
   * Block types (e.g., "minecraft:stone", "minecraft:diamond_ore").
   *
   * @generated from field: repeated soulfire.v1.RegistryEntry blocks = 1;
   */
  blocks: RegistryEntry[];

  /**
   * Entity types (e.g., "minecraft:zombie", "minecraft:player").
   *
   * @generated from field: repeated soulfire.v1.RegistryEntry entities = 2;
   */
  entities: RegistryEntry[];

  /**
   * Item types (e.g., "minecraft:diamond", "minecraft:stick").
   *
   * @generated from field: repeated soulfire.v1.RegistryEntry items = 3;
   */
  items: RegistryEntry[];

  /**
   * Biome types (e.g., "minecraft:plains", "minecraft:forest").
   *
   * @generated from field: repeated soulfire.v1.RegistryEntry biomes = 4;
   */
  biomes: RegistryEntry[];
};

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

/**
 * The type of connection between nodes in the visual script editor.
 * Determines how data and control flow between nodes.
 *
 * @generated from enum soulfire.v1.EdgeType
 */
export enum EdgeType {
  /**
   * Execution edge that controls the order of node execution.
   * When a node completes, execution flows through its outgoing execution edges.
   *
   * @generated from enum value: EDGE_TYPE_EXECUTION = 0;
   */
  EXECUTION = 0,

  /**
   * Data edge that passes values between nodes.
   * Data edges transfer output values from one node's output port to another node's input port.
   *
   * @generated from enum value: EDGE_TYPE_DATA = 1;
   */
  DATA = 1,
}

/**
 * Describes the enum soulfire.v1.EdgeType.
 */
export const EdgeTypeSchema: GenEnum<EdgeType> = /*@__PURE__*/
  enumDesc(file_soulfire_script, 0);

/**
 * The data type of a node port.
 * Used for validation and UI rendering of connections.
 *
 * @generated from enum soulfire.v1.PortType
 */
export enum PortType {
  /**
   * Any type - accepts all values. Used for generic nodes.
   *
   * @generated from enum value: PORT_TYPE_ANY = 0;
   */
  ANY = 0,

  /**
   * Numeric value (integer or floating point).
   *
   * @generated from enum value: PORT_TYPE_NUMBER = 1;
   */
  NUMBER = 1,

  /**
   * Text string value.
   *
   * @generated from enum value: PORT_TYPE_STRING = 2;
   */
  STRING = 2,

  /**
   * Boolean true/false value.
   *
   * @generated from enum value: PORT_TYPE_BOOLEAN = 3;
   */
  BOOLEAN = 3,

  /**
   * 3D vector with x, y, z components.
   *
   * @generated from enum value: PORT_TYPE_VECTOR3 = 4;
   */
  VECTOR3 = 4,

  /**
   * Reference to a bot connection.
   *
   * @generated from enum value: PORT_TYPE_BOT = 5;
   */
  BOT = 5,

  /**
   * List/array of values.
   *
   * @generated from enum value: PORT_TYPE_LIST = 6;
   */
  LIST = 6,

  /**
   * Execution flow port (not data).
   *
   * @generated from enum value: PORT_TYPE_EXEC = 7;
   */
  EXEC = 7,

  /**
   * Block type identifier.
   *
   * @generated from enum value: PORT_TYPE_BLOCK = 8;
   */
  BLOCK = 8,

  /**
   * Entity reference.
   *
   * @generated from enum value: PORT_TYPE_ENTITY = 9;
   */
  ENTITY = 9,

  /**
   * Item stack reference.
   *
   * @generated from enum value: PORT_TYPE_ITEM = 10;
   */
  ITEM = 10,

  /**
   * Key-value map of entries.
   *
   * @generated from enum value: PORT_TYPE_MAP = 11;
   */
  MAP = 11,

  /**
   * Set of unique values with stable insertion order.
   *
   * @generated from enum value: PORT_TYPE_SET = 12;
   */
  SET = 12,

  /**
   * Any Java-like collection type. LIST and SET are compatible with COLLECTION.
   *
   * @generated from enum value: PORT_TYPE_COLLECTION = 13;
   */
  COLLECTION = 13,
}

/**
 * Describes the enum soulfire.v1.PortType.
 */
export const PortTypeSchema: GenEnum<PortType> = /*@__PURE__*/
  enumDesc(file_soulfire_script, 1);

/**
 * Log levels for script execution logging.
 * Maps to standard logging severity levels for filtering and display.
 *
 * @generated from enum soulfire.v1.LogLevel
 */
export enum LogLevel {
  /**
   * Debug level for verbose diagnostic information.
   * Typically only shown when troubleshooting scripts.
   *
   * @generated from enum value: LOG_LEVEL_DEBUG = 0;
   */
  DEBUG = 0,

  /**
   * Informational messages about script execution progress.
   * Normal operational messages.
   *
   * @generated from enum value: LOG_LEVEL_INFO = 1;
   */
  INFO = 1,

  /**
   * Warning level for potentially problematic situations.
   * Script continues execution but something unexpected occurred.
   *
   * @generated from enum value: LOG_LEVEL_WARN = 2;
   */
  WARN = 2,

  /**
   * Error level for failures that may affect script execution.
   * Indicates a problem that needs attention.
   *
   * @generated from enum value: LOG_LEVEL_ERROR = 3;
   */
  ERROR = 3,
}

/**
 * Describes the enum soulfire.v1.LogLevel.
 */
export const LogLevelSchema: GenEnum<LogLevel> = /*@__PURE__*/
  enumDesc(file_soulfire_script, 2);

/**
 * Severity level for validation diagnostics.
 *
 * @generated from enum soulfire.v1.DiagnosticSeverity
 */
export enum DiagnosticSeverity {
  /**
   * Error that prevents script execution.
   *
   * @generated from enum value: DIAGNOSTIC_ERROR = 0;
   */
  DIAGNOSTIC_ERROR = 0,

  /**
   * Warning that does not prevent execution but may indicate issues.
   *
   * @generated from enum value: DIAGNOSTIC_WARNING = 1;
   */
  DIAGNOSTIC_WARNING = 1,
}

/**
 * Describes the enum soulfire.v1.DiagnosticSeverity.
 */
export const DiagnosticSeveritySchema: GenEnum<DiagnosticSeverity> = /*@__PURE__*/
  enumDesc(file_soulfire_script, 3);

/**
 * Shape of the port handle in the visual editor.
 *
 * @generated from enum soulfire.v1.HandleShape
 */
export enum HandleShape {
  /**
   * Circular handle, default for data ports.
   *
   * @generated from enum value: HANDLE_SHAPE_CIRCLE = 0;
   */
  CIRCLE = 0,

  /**
   * Square handle, typically used for execution/flow ports.
   *
   * @generated from enum value: HANDLE_SHAPE_SQUARE = 1;
   */
  SQUARE = 1,

  /**
   * Diamond-shaped handle, for special port types.
   *
   * @generated from enum value: HANDLE_SHAPE_DIAMOND = 2;
   */
  DIAMOND = 2,
}

/**
 * Describes the enum soulfire.v1.HandleShape.
 */
export const HandleShapeSchema: GenEnum<HandleShape> = /*@__PURE__*/
  enumDesc(file_soulfire_script, 4);

/**
 * Visual style for edges connected to this port type.
 *
 * @generated from enum soulfire.v1.EdgeStyle
 */
export enum EdgeStyle {
  /**
   * Default bezier curve style.
   *
   * @generated from enum value: EDGE_STYLE_DEFAULT = 0;
   */
  DEFAULT = 0,

  /**
   * Animated flow style with moving dashes, typically for execution edges.
   *
   * @generated from enum value: EDGE_STYLE_ANIMATED = 1;
   */
  ANIMATED = 1,

  /**
   * Dashed line style.
   *
   * @generated from enum value: EDGE_STYLE_DASHED = 2;
   */
  DASHED = 2,
}

/**
 * Describes the enum soulfire.v1.EdgeStyle.
 */
export const EdgeStyleSchema: GenEnum<EdgeStyle> = /*@__PURE__*/
  enumDesc(file_soulfire_script, 5);

/**
 * ScriptService provides management and execution capabilities for visual node-based
 * automation scripts within SoulFire.
 *
 * The visual scripting system allows users to create automation workflows by connecting
 * nodes in a graph. Each node represents an action, condition, or event trigger.
 * Nodes are connected by edges that define execution flow and data transfer.
 *
 * SCRIPT LIFECYCLE:
 * 1. Create a script using CreateScript with initial nodes/edges or empty graph
 * 2. Edit the script using UpdateScript to modify the node graph
 * 3. Activate the script using ActivateScript to register event listeners
 * 4. Monitor execution via SubscribeScriptEvents or GetScriptStatus
 * 5. Deactivate using DeactivateScript when done
 * 6. Delete unused scripts with DeleteScript
 *
 * Scripts are reactive state machines - they don't "run" but rather listen for
 * trigger events and execute node chains in response. Activation registers the
 * listeners, deactivation removes them and cancels any pending async operations.
 *
 * PERMISSIONS: Script operations require appropriate instance permissions.
 * The specific permissions are TBD but will likely include:
 * - READ_SCRIPT: View script definitions and status
 * - UPDATE_SCRIPT: Create, modify, and delete scripts
 * - EXECUTE_SCRIPT: Activate and deactivate scripts
 *
 * LOGGING: Script execution logs can be streamed via SubscribeScriptLogs or
 * filtered using InstanceScriptLogScope in the LogsService (see logs.proto).
 *
 * @generated from service soulfire.v1.ScriptService
 */
export const ScriptService: GenService<{
  /**
   * Creates a new script in the specified instance.
   * The script can be created with initial nodes and edges, or as a blank script
   * to be edited later.
   * Returns: The complete script data including the generated ID
   * Errors: NOT_FOUND if instance does not exist
   * Errors: PERMISSION_DENIED if user lacks script creation permission
   * Errors: INVALID_ARGUMENT if required fields are missing or invalid
   *
   * @generated from rpc soulfire.v1.ScriptService.CreateScript
   */
  createScript: {
    methodKind: "unary";
    input: typeof CreateScriptRequestSchema;
    output: typeof CreateScriptResponseSchema;
  },
  /**
   * Retrieves a specific script by its ID.
   * Returns the complete script data including all nodes and edges.
   * Errors: NOT_FOUND if instance or script does not exist
   * Errors: PERMISSION_DENIED if user lacks script read permission
   *
   * @generated from rpc soulfire.v1.ScriptService.GetScript
   */
  getScript: {
    methodKind: "unary";
    input: typeof GetScriptRequestSchema;
    output: typeof GetScriptResponseSchema;
  },
  /**
   * Updates an existing script's metadata and/or node graph.
   * Only specified fields are updated; others remain unchanged.
   * Use update_nodes/update_edges flags to explicitly set empty lists.
   * Errors: NOT_FOUND if instance or script does not exist
   * Errors: PERMISSION_DENIED if user lacks script update permission
   * Errors: INVALID_ARGUMENT if update data is invalid
   *
   * @generated from rpc soulfire.v1.ScriptService.UpdateScript
   */
  updateScript: {
    methodKind: "unary";
    input: typeof UpdateScriptRequestSchema;
    output: typeof UpdateScriptResponseSchema;
  },
  /**
   * Permanently deletes a script.
   * If the script is currently active, it will be deactivated first.
   * This operation cannot be undone.
   * Errors: NOT_FOUND if instance or script does not exist
   * Errors: PERMISSION_DENIED if user lacks script delete permission
   *
   * @generated from rpc soulfire.v1.ScriptService.DeleteScript
   */
  deleteScript: {
    methodKind: "unary";
    input: typeof DeleteScriptRequestSchema;
    output: typeof DeleteScriptResponseSchema;
  },
  /**
   * Lists all scripts in the specified instance.
   * Returns summary information (ScriptInfo) without full node/edge data
   * to reduce response size.
   * Errors: NOT_FOUND if instance does not exist
   * Errors: PERMISSION_DENIED if user lacks script read permission
   *
   * @generated from rpc soulfire.v1.ScriptService.ListScripts
   */
  listScripts: {
    methodKind: "unary";
    input: typeof ListScriptsRequestSchema;
    output: typeof ListScriptsResponseSchema;
  },
  /**
   * Activates a script by registering its trigger event listeners.
   * The script will begin responding to trigger events (tick, chat, etc.).
   * Returns a stream of execution events as triggers fire and nodes execute.
   * The stream remains open until the script is deactivated.
   * Errors: NOT_FOUND if instance or script does not exist
   * Errors: PERMISSION_DENIED if user lacks script execution permission
   * Errors: FAILED_PRECONDITION if script is already active
   * Errors: INVALID_ARGUMENT if script graph is invalid (e.g., no trigger nodes)
   *
   * @generated from rpc soulfire.v1.ScriptService.ActivateScript
   */
  activateScript: {
    methodKind: "server_streaming";
    input: typeof ActivateScriptRequestSchema;
    output: typeof ScriptEventSchema;
  },
  /**
   * Deactivates an active script.
   * Unregisters all event listeners and cancels any pending async operations.
   * Errors: NOT_FOUND if instance or script does not exist
   * Errors: PERMISSION_DENIED if user lacks script execution permission
   * Errors: FAILED_PRECONDITION if script is not active
   *
   * @generated from rpc soulfire.v1.ScriptService.DeactivateScript
   */
  deactivateScript: {
    methodKind: "unary";
    input: typeof DeactivateScriptRequestSchema;
    output: typeof DeactivateScriptResponseSchema;
  },
  /**
   * Gets the current status of a script.
   * Returns whether the script is active, which node is executing, and activation count.
   * Errors: NOT_FOUND if instance or script does not exist
   * Errors: PERMISSION_DENIED if user lacks script read permission
   *
   * @generated from rpc soulfire.v1.ScriptService.GetScriptStatus
   */
  getScriptStatus: {
    methodKind: "unary";
    input: typeof GetScriptStatusRequestSchema;
    output: typeof GetScriptStatusResponseSchema;
  },
  /**
   * Subscribes to log entries generated during script execution.
   * Returns a stream of log entries at or above the specified minimum level.
   * The stream remains open until cancelled by the client.
   * Errors: NOT_FOUND if instance or script does not exist
   * Errors: PERMISSION_DENIED if user lacks script log subscription permission
   *
   * @generated from rpc soulfire.v1.ScriptService.SubscribeScriptLogs
   */
  subscribeScriptLogs: {
    methodKind: "server_streaming";
    input: typeof SubscribeScriptLogsRequestSchema;
    output: typeof ScriptLogEntrySchema;
  },
  /**
   * Gets all available node types with their metadata.
   * This enables clients to render the node editor without hardcoded knowledge
   * of specific node types. The response includes port definitions, categories,
   * display names, and all other information needed to render and validate nodes.
   * This endpoint is cacheable - node types only change between server versions.
   *
   * @generated from rpc soulfire.v1.ScriptService.GetNodeTypes
   */
  getNodeTypes: {
    methodKind: "unary";
    input: typeof GetNodeTypesRequestSchema;
    output: typeof GetNodeTypesResponseSchema;
  },
  /**
   * Gets Minecraft registry data for autocomplete and validation.
   * Returns blocks, entities, items, and biomes that can be used in scripts.
   * This endpoint is cacheable - registry data only changes between server versions.
   *
   * @generated from rpc soulfire.v1.ScriptService.GetRegistryData
   */
  getRegistryData: {
    methodKind: "unary";
    input: typeof GetRegistryDataRequestSchema;
    output: typeof GetRegistryDataResponseSchema;
  },
  /**
   * Validates a script graph without saving it.
   * Returns all diagnostics (errors and warnings) for the given nodes and edges.
   * Useful for live validation in the editor without requiring a save.
   *
   * @generated from rpc soulfire.v1.ScriptService.ValidateScript
   */
  validateScript: {
    methodKind: "unary";
    input: typeof ValidateScriptRequestSchema;
    output: typeof ValidateScriptResponseSchema;
  },
  /**
   * Dry-runs a script from a specified trigger with mock inputs.
   * Executes the graph without requiring an active instance.
   * Returns execution events as a stream for the editor to display.
   *
   * @generated from rpc soulfire.v1.ScriptService.DryRunScript
   */
  dryRunScript: {
    methodKind: "server_streaming";
    input: typeof DryRunScriptRequestSchema;
    output: typeof ScriptEventSchema;
  },
}> = /*@__PURE__*/
  serviceDesc(file_soulfire_script, 0);
