import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
import type { SignalFormat, SignalFormatJson } from "./signal_format_pb";
import type { Message } from "@bufbuild/protobuf";
/**
 * Describes the file mochabugapis/adapt/graph/signal_binding.proto.
 */
export declare const file_mochabugapis_adapt_graph_signal_binding: GenFile;
/**
 * SignalBinding represents an input point for a vertex in the computation graph.
 * Unlike SignalDescriptor which describes what a signal IS (producing one specific format),
 * a binding describes what formats an input ACCEPTS (potentially accepting multiple formats).
 *
 * Bindings enable flexible graph construction by allowing vertices to accept data in
 * various compatible formats. For example, a text display component might accept strings,
 * numbers, dates, and booleans, while an image viewer might accept image/* MIME types.
 *
 * The binding is connected via a reference — either to a signal in the graph or to a
 * project-level constant. Validation ensures the format matches one of the accepted formats.
 *
 * @generated from message mochabugapis.adapt.graph.SignalBinding
 */
export type SignalBinding = Message<"mochabugapis.adapt.graph.SignalBinding"> & {
    /**
     * Identifier for this binding point, following ECMAScript identifier conventions.
     * Must be unique within the vertex's binding collection.
     *
     * Pattern: Must start with letter, $, or _, followed by letters, digits, $, or _
     * Length: 1-50 characters
     *
     * Examples: "inputText", "image_data", "$config", "_internalParam"
     *
     * @generated from field: string name = 1;
     */
    name: string;
    /**
     * Human-readable label for the binding, suitable for display in user interfaces.
     * Describes what this input represents in the context of the vertex.
     *
     * Length: Up to 250 characters
     *
     * Examples: "Text to Display", "Source Image", "Configuration Object"
     *
     * @generated from field: optional string label = 2;
     */
    label?: string;
    /**
     * Detailed description of the binding's purpose and accepted data.
     * Should document what the vertex does with this input and any constraints.
     *
     * Length: Up to 1000 characters
     *
     * May include:
     * - What the binding represents in the vertex's operation
     * - How the data is used or transformed
     * - Constraints on values or formats
     * - Examples of valid inputs
     *
     * @generated from field: optional string description = 3;
     */
    description?: string;
    /**
     * Indicates whether this binding must be connected.
     *
     * When false or unset: Binding is required and must be connected
     * When true: Binding is optional and may be left unbound
     *
     * Optional bindings provide flexibility, allowing vertices to function
     * with or without certain inputs (e.g., optional configuration parameters).
     *
     * @generated from field: optional bool optional = 4;
     */
    optional?: boolean;
    /**
     * List of formats this binding accepts. The binding will accept any signal whose
     * format matches at least one entry in this list.
     *
     * Format matching rules:
     * - JTD schemas: Structural compatibility according to JTD specification
     * - MIME types (exact): Exact string match (case-insensitive)
     * - MIME types (wildcard): Pattern matching with * wildcards
     *   - "image/*" matches "image/png", "image/jpeg", "image/webp", etc.
     *   - "text/*" matches "text/plain", "text/html", "text/csv", etc.
     *   - "application/*" matches any application type
     *
     * Common patterns:
     *
     * Example 1: Text display (accepts primitive types for display as text)
     *   accepts = [
     *     { jtd_schema: { type: "string" } },
     *     { jtd_schema: { type: "float32" } },
     *     { jtd_schema: { type: "float64" } },
     *     { jtd_schema: { type: "int32" } },
     *     { jtd_schema: { type: "boolean" } },
     *     { jtd_schema: { type: "timestamp" } }
     *   ]
     *
     * Example 2: Image viewer (accepts displayable image formats)
     *   accepts = [
     *     { mime_type: "image/*" }  // Accepts any image type
     *   ]
     *
     * Example 3: Document viewer (accepts specific document types)
     *   accepts = [
     *     { mime_type: "application/pdf" },
     *     { mime_type: "text/html" },
     *     { mime_type: "text/plain" }
     *   ]
     *
     * Example 4: Data processor (accepts structured data)
     *   accepts = [
     *     { jtd_schema: { elements: { type: "string" } } },  // Array of strings
     *     { jtd_schema: { properties: { id: { type: "string" } } } }  // Object with id
     *   ]
     *
     * Validation: At least one format must be specified. Maximum 50 formats to prevent
     * overly permissive bindings and ensure reasonable validation performance.
     *
     * @generated from field: repeated mochabugapis.adapt.graph.SignalFormat accepts = 5;
     */
    accepts: SignalFormat[];
    /**
     * Reference to another signal in the graph, or a project-level constant.
     *
     * Signal reference format: <vertex_id>/<transmitter_name>/<signal_name>
     * - vertex_id: 4-character alphanumeric identifier (lowercase)
     * - transmitter_name: ECMAScript identifier for the output transmitter
     * - signal_name: ECMAScript identifier for the specific signal
     *
     * Constant reference format: constant/<constant_name>
     * - constant_name: ECMAScript identifier for the project-level constant
     *
     * Examples:
     * - "a1b2/output/temperature"    (signal reference)
     * - "xyz9/results/processedData" (signal reference)
     * - "constant/apiKey"            (constant reference)
     * - "constant/threshold"         (constant reference)
     *
     * Signal references are resolved during execution by reading from the
     * referenced transmitter. Constant references are baked into the published
     * run and must be valid at publish time.
     *
     * The referenced signal's or constant's format must match one of the
     * accepted formats. Validation occurs at graph construction time.
     *
     * @generated from field: string reference = 6;
     */
    reference: string;
    /**
     * Error state of this binding, if any.
     * Set by the graph validation system when issues are detected.
     * Should not be set to ERROR_UNSPECIFIED (value 0).
     *
     * When unset: Binding is valid
     * When set: Binding has the specified error and requires correction
     *
     * Applications should check this field and provide appropriate user feedback
     * for bindings in error states.
     *
     * @generated from field: optional mochabugapis.adapt.graph.SignalBinding.Error error = 8;
     */
    error?: SignalBinding_Error;
};
/**
 * SignalBinding represents an input point for a vertex in the computation graph.
 * Unlike SignalDescriptor which describes what a signal IS (producing one specific format),
 * a binding describes what formats an input ACCEPTS (potentially accepting multiple formats).
 *
 * Bindings enable flexible graph construction by allowing vertices to accept data in
 * various compatible formats. For example, a text display component might accept strings,
 * numbers, dates, and booleans, while an image viewer might accept image/* MIME types.
 *
 * The binding is connected via a reference — either to a signal in the graph or to a
 * project-level constant. Validation ensures the format matches one of the accepted formats.
 *
 * @generated from message mochabugapis.adapt.graph.SignalBinding
 */
export type SignalBindingJson = {
    /**
     * Identifier for this binding point, following ECMAScript identifier conventions.
     * Must be unique within the vertex's binding collection.
     *
     * Pattern: Must start with letter, $, or _, followed by letters, digits, $, or _
     * Length: 1-50 characters
     *
     * Examples: "inputText", "image_data", "$config", "_internalParam"
     *
     * @generated from field: string name = 1;
     */
    name?: string;
    /**
     * Human-readable label for the binding, suitable for display in user interfaces.
     * Describes what this input represents in the context of the vertex.
     *
     * Length: Up to 250 characters
     *
     * Examples: "Text to Display", "Source Image", "Configuration Object"
     *
     * @generated from field: optional string label = 2;
     */
    label?: string;
    /**
     * Detailed description of the binding's purpose and accepted data.
     * Should document what the vertex does with this input and any constraints.
     *
     * Length: Up to 1000 characters
     *
     * May include:
     * - What the binding represents in the vertex's operation
     * - How the data is used or transformed
     * - Constraints on values or formats
     * - Examples of valid inputs
     *
     * @generated from field: optional string description = 3;
     */
    description?: string;
    /**
     * Indicates whether this binding must be connected.
     *
     * When false or unset: Binding is required and must be connected
     * When true: Binding is optional and may be left unbound
     *
     * Optional bindings provide flexibility, allowing vertices to function
     * with or without certain inputs (e.g., optional configuration parameters).
     *
     * @generated from field: optional bool optional = 4;
     */
    optional?: boolean;
    /**
     * List of formats this binding accepts. The binding will accept any signal whose
     * format matches at least one entry in this list.
     *
     * Format matching rules:
     * - JTD schemas: Structural compatibility according to JTD specification
     * - MIME types (exact): Exact string match (case-insensitive)
     * - MIME types (wildcard): Pattern matching with * wildcards
     *   - "image/*" matches "image/png", "image/jpeg", "image/webp", etc.
     *   - "text/*" matches "text/plain", "text/html", "text/csv", etc.
     *   - "application/*" matches any application type
     *
     * Common patterns:
     *
     * Example 1: Text display (accepts primitive types for display as text)
     *   accepts = [
     *     { jtd_schema: { type: "string" } },
     *     { jtd_schema: { type: "float32" } },
     *     { jtd_schema: { type: "float64" } },
     *     { jtd_schema: { type: "int32" } },
     *     { jtd_schema: { type: "boolean" } },
     *     { jtd_schema: { type: "timestamp" } }
     *   ]
     *
     * Example 2: Image viewer (accepts displayable image formats)
     *   accepts = [
     *     { mime_type: "image/*" }  // Accepts any image type
     *   ]
     *
     * Example 3: Document viewer (accepts specific document types)
     *   accepts = [
     *     { mime_type: "application/pdf" },
     *     { mime_type: "text/html" },
     *     { mime_type: "text/plain" }
     *   ]
     *
     * Example 4: Data processor (accepts structured data)
     *   accepts = [
     *     { jtd_schema: { elements: { type: "string" } } },  // Array of strings
     *     { jtd_schema: { properties: { id: { type: "string" } } } }  // Object with id
     *   ]
     *
     * Validation: At least one format must be specified. Maximum 50 formats to prevent
     * overly permissive bindings and ensure reasonable validation performance.
     *
     * @generated from field: repeated mochabugapis.adapt.graph.SignalFormat accepts = 5;
     */
    accepts?: SignalFormatJson[];
    /**
     * Reference to another signal in the graph, or a project-level constant.
     *
     * Signal reference format: <vertex_id>/<transmitter_name>/<signal_name>
     * - vertex_id: 4-character alphanumeric identifier (lowercase)
     * - transmitter_name: ECMAScript identifier for the output transmitter
     * - signal_name: ECMAScript identifier for the specific signal
     *
     * Constant reference format: constant/<constant_name>
     * - constant_name: ECMAScript identifier for the project-level constant
     *
     * Examples:
     * - "a1b2/output/temperature"    (signal reference)
     * - "xyz9/results/processedData" (signal reference)
     * - "constant/apiKey"            (constant reference)
     * - "constant/threshold"         (constant reference)
     *
     * Signal references are resolved during execution by reading from the
     * referenced transmitter. Constant references are baked into the published
     * run and must be valid at publish time.
     *
     * The referenced signal's or constant's format must match one of the
     * accepted formats. Validation occurs at graph construction time.
     *
     * @generated from field: string reference = 6;
     */
    reference?: string;
    /**
     * Error state of this binding, if any.
     * Set by the graph validation system when issues are detected.
     * Should not be set to ERROR_UNSPECIFIED (value 0).
     *
     * When unset: Binding is valid
     * When set: Binding has the specified error and requires correction
     *
     * Applications should check this field and provide appropriate user feedback
     * for bindings in error states.
     *
     * @generated from field: optional mochabugapis.adapt.graph.SignalBinding.Error error = 8;
     */
    error?: SignalBinding_ErrorJson;
};
/**
 * Describes the message mochabugapis.adapt.graph.SignalBinding.
 * Use `create(SignalBindingSchema)` to create a new message.
 */
export declare const SignalBindingSchema: GenMessage<SignalBinding, {
    jsonType: SignalBindingJson;
}>;
/**
 * Error codes that can occur during binding validation or resolution.
 * These errors are typically set by the graph validation system.
 *
 * @generated from enum mochabugapis.adapt.graph.SignalBinding.Error
 */
export declare enum SignalBinding_Error {
    /**
     * No error specified. This value should never be explicitly set as it indicates
     * the absence of an error. The error field should be unset for valid bindings.
     *
     * @generated from enum value: ERROR_UNSPECIFIED = 0;
     */
    UNSPECIFIED = 0,
    /**
     * The binding is unbound (no reference provided) despite being required.
     * This occurs when:
     * - The binding is not marked as optional
     * - The 'reference' field is not set
     *
     * Resolution: Provide a signal reference or a constant reference.
     *
     * @generated from enum value: ERROR_UNBOUND = 1;
     */
    UNBOUND = 1,
    /**
     * The referenced signal source does not exist in the graph.
     * This occurs when:
     * - The reference points to a non-existent vertex ID
     * - The transmitter name doesn't exist on the referenced vertex
     * - The signal name doesn't exist on the specified transmitter
     *
     * Resolution: Verify the signal reference path and ensure the source vertex,
     * transmitter, and signal all exist.
     *
     * @generated from enum value: ERROR_INVALID_SOURCE = 2;
     */
    INVALID_SOURCE = 2,
    /**
     * The signal format doesn't match any of the accepted formats.
     * This occurs when:
     * - The source signal's format (from SignalDescriptor) doesn't match any
     *   format in the 'accepts' list
     * - JTD schema validation fails
     * - MIME type mismatch (including wildcard matching failures)
     *
     * Resolution: Either change the binding to accept the source signal's format,
     * or use a different signal source with a compatible format.
     *
     * @generated from enum value: ERROR_SCHEMA_MISMATCH = 3;
     */
    SCHEMA_MISMATCH = 3
}
/**
 * Error codes that can occur during binding validation or resolution.
 * These errors are typically set by the graph validation system.
 *
 * @generated from enum mochabugapis.adapt.graph.SignalBinding.Error
 */
export type SignalBinding_ErrorJson = "ERROR_UNSPECIFIED" | "ERROR_UNBOUND" | "ERROR_INVALID_SOURCE" | "ERROR_SCHEMA_MISMATCH";
/**
 * Describes the enum mochabugapis.adapt.graph.SignalBinding.Error.
 */
export declare const SignalBinding_ErrorSchema: GenEnum<SignalBinding_Error, SignalBinding_ErrorJson>;
//# sourceMappingURL=signal_binding_pb.d.ts.map