import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
import type { Message } from "@bufbuild/protobuf";
/**
 * Describes the file mochabugapis/adapt/plugins/v1/vertex.proto.
 */
export declare const file_mochabugapis_adapt_plugins_v1_vertex: GenFile;
/**
 * Vertex represents a graph vertex that defines a plugin.
 * Note: Be aware of potential security implications when dealing with
 * user-provided data, such as file paths, and ensure proper input validation
 * and sanitization.
 *
 * @generated from message mochabugapis.adapt.plugins.v1.Vertex
 */
export type Vertex = Message<"mochabugapis.adapt.plugins.v1.Vertex"> & {
    /**
     * 'name' represents the vertex name.
     *
     * @generated from field: string name = 1;
     */
    name: string;
    /**
     * 'label' is a human-friendly label displayed in the UI.
     *
     * @generated from field: string label = 2;
     */
    label: string;
    /**
     * 'description' is a human-friendly short description of the vertex displayed
     * in UI.
     *
     * @generated from field: optional string description = 3;
     */
    description?: string;
    /**
     * 'logo' is the file path to the vertex logo, which will be resized to a
     * maximum of 40x40 pixels. Ensure that the logo files are from trusted
     * sources to avoid security risks.
     * - Supported file formats:
     *   - GIF: .gif
     *   - JPEG: .jpg, .jpeg, .jfif, .pjpeg, .pjp
     *   - PNG: .png
     *   - SVG: .svg
     *   - WEBP: .webp
     *   - AVIF: .avif
     *
     * @generated from field: optional string logo = 4;
     */
    logo?: string;
    /**
     * 'capabilities' specifies the capabilities of the vertex
     *
     * @generated from field: repeated mochabugapis.adapt.plugins.v1.Capability capabilities = 5;
     */
    capabilities: Capability[];
    /**
     * 'config' is an field that contains a Unix file path.
     * This can be any type of file, this is only intepreted for the vertex itself
     * Restrictions:
     *
     *
     * @generated from field: optional string config = 6;
     */
    config?: string;
    /**
     * 'metadata' is an field that contains a Unix file path.
     * This determines which receivers, transmitters etc... the vertex has to begin with
     * Restrictions:
     *
     *
     * @generated from field: string metadata = 7;
     */
    metadata: string;
    /**
     * 'user_services' are vertex-level services configured per vertex instance.
     *
     * This is a string array where each string directly references a ServiceDefinition by its name
     * from Manifest.service_definitions. These services are configured by end users for each
     * specific vertex instance in their workflow.
     *
     * The `optional` field in the ServiceDefinition controls whether configuration is required:
     * - If ServiceDefinition.optional = false (default): User MUST configure this service
     * - If ServiceDefinition.optional = true: User MAY skip configuring this service
     *
     * Example:
     *   service_definitions: [
     *     { name: "api_key", variable: {...} },
     *     { name: "webhook_url", variable: {...}, optional: true }
     *   ]
     *   user_services: ["api_key", "webhook_url"]
     *
     * @generated from field: repeated string user_services = 8;
     */
    userServices: string[];
    /**
     * 'deprecated' is a boolean that indicates if the vertex is deprecated
     * this means that it will be removed in the next major version
     * and should be migrated asap
     *
     * @generated from field: optional bool deprecated = 9;
     */
    deprecated?: boolean;
};
/**
 * Vertex represents a graph vertex that defines a plugin.
 * Note: Be aware of potential security implications when dealing with
 * user-provided data, such as file paths, and ensure proper input validation
 * and sanitization.
 *
 * @generated from message mochabugapis.adapt.plugins.v1.Vertex
 */
export type VertexJson = {
    /**
     * 'name' represents the vertex name.
     *
     * @generated from field: string name = 1;
     */
    name?: string;
    /**
     * 'label' is a human-friendly label displayed in the UI.
     *
     * @generated from field: string label = 2;
     */
    label?: string;
    /**
     * 'description' is a human-friendly short description of the vertex displayed
     * in UI.
     *
     * @generated from field: optional string description = 3;
     */
    description?: string;
    /**
     * 'logo' is the file path to the vertex logo, which will be resized to a
     * maximum of 40x40 pixels. Ensure that the logo files are from trusted
     * sources to avoid security risks.
     * - Supported file formats:
     *   - GIF: .gif
     *   - JPEG: .jpg, .jpeg, .jfif, .pjpeg, .pjp
     *   - PNG: .png
     *   - SVG: .svg
     *   - WEBP: .webp
     *   - AVIF: .avif
     *
     * @generated from field: optional string logo = 4;
     */
    logo?: string;
    /**
     * 'capabilities' specifies the capabilities of the vertex
     *
     * @generated from field: repeated mochabugapis.adapt.plugins.v1.Capability capabilities = 5;
     */
    capabilities?: CapabilityJson[];
    /**
     * 'config' is an field that contains a Unix file path.
     * This can be any type of file, this is only intepreted for the vertex itself
     * Restrictions:
     *
     *
     * @generated from field: optional string config = 6;
     */
    config?: string;
    /**
     * 'metadata' is an field that contains a Unix file path.
     * This determines which receivers, transmitters etc... the vertex has to begin with
     * Restrictions:
     *
     *
     * @generated from field: string metadata = 7;
     */
    metadata?: string;
    /**
     * 'user_services' are vertex-level services configured per vertex instance.
     *
     * This is a string array where each string directly references a ServiceDefinition by its name
     * from Manifest.service_definitions. These services are configured by end users for each
     * specific vertex instance in their workflow.
     *
     * The `optional` field in the ServiceDefinition controls whether configuration is required:
     * - If ServiceDefinition.optional = false (default): User MUST configure this service
     * - If ServiceDefinition.optional = true: User MAY skip configuring this service
     *
     * Example:
     *   service_definitions: [
     *     { name: "api_key", variable: {...} },
     *     { name: "webhook_url", variable: {...}, optional: true }
     *   ]
     *   user_services: ["api_key", "webhook_url"]
     *
     * @generated from field: repeated string user_services = 8;
     */
    userServices?: string[];
    /**
     * 'deprecated' is a boolean that indicates if the vertex is deprecated
     * this means that it will be removed in the next major version
     * and should be migrated asap
     *
     * @generated from field: optional bool deprecated = 9;
     */
    deprecated?: boolean;
};
/**
 * Describes the message mochabugapis.adapt.plugins.v1.Vertex.
 * Use `create(VertexSchema)` to create a new message.
 */
export declare const VertexSchema: GenMessage<Vertex, {
    jsonType: VertexJson;
}>;
/**
 * The capabilities of a vertex defines how the vertex is interracted with
 * If the vertex has the cron capabilitiy, then a cron-scheduler will call the
 * cron endpoint periodically until the vertex has finished or stopped
 * If the vertex has external browser capabiltity, there will be an external endpoint
 * where a third-party can communicate with the vertex
 * If the vertex has a configurator, then the vertex will be able to be configured dynamically
 *
 * @generated from enum mochabugapis.adapt.plugins.v1.Capability
 */
export declare enum Capability {
    /**
     * Unspecified capability (default value, should not be used).
     *
     * @generated from enum value: CAPABILITY_UNSPECIFIED = 0;
     */
    UNSPECIFIED = 0,
    /**
     * Cron capability, indicating that the vertex can be triggered at specific
     * intervals.
     *
     * @generated from enum value: CAPABILITY_CRON = 1;
     */
    CRON = 1,
    /**
     * The external capability, indicating that the vertex can be accessed via a
     * publicly routable address.
     *
     * @generated from enum value: CAPABILITY_EXTERNAL = 2;
     */
    EXTERNAL = 2,
    /**
     * Configurator capability, indicating that the vertex can be configured
     * dynamically by a vertex-defined interface.
     *
     * @generated from enum value: CAPABILITY_CONFIGURATOR = 3;
     */
    CONFIGURATOR = 3,
    /**
     * Browser capability, indicating that the vertex can be accessed via a
     * browser context.
     *
     * @generated from enum value: CAPABILITY_BROWSER = 4;
     */
    BROWSER = 4
}
/**
 * The capabilities of a vertex defines how the vertex is interracted with
 * If the vertex has the cron capabilitiy, then a cron-scheduler will call the
 * cron endpoint periodically until the vertex has finished or stopped
 * If the vertex has external browser capabiltity, there will be an external endpoint
 * where a third-party can communicate with the vertex
 * If the vertex has a configurator, then the vertex will be able to be configured dynamically
 *
 * @generated from enum mochabugapis.adapt.plugins.v1.Capability
 */
export type CapabilityJson = "CAPABILITY_UNSPECIFIED" | "CAPABILITY_CRON" | "CAPABILITY_EXTERNAL" | "CAPABILITY_CONFIGURATOR" | "CAPABILITY_BROWSER";
/**
 * Describes the enum mochabugapis.adapt.plugins.v1.Capability.
 */
export declare const CapabilitySchema: GenEnum<Capability, CapabilityJson>;
//# sourceMappingURL=vertex_pb.d.ts.map