import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
import type { ServiceDefinition, ServiceDefinitionJson } from "./service_definition_pb";
import type { Vertex, VertexJson } from "./vertex_pb";
import type { Message } from "@bufbuild/protobuf";
/**
 * Describes the file mochabugapis/adapt/plugins/v1/manifest.proto.
 */
export declare const file_mochabugapis_adapt_plugins_v1_manifest: GenFile;
/**
 * Manifest describes a plugin and its properties.
 *
 * ## Architecture Overview
 *
 * A plugin consists of:
 * 1. **Vertices**: The actual workflow nodes that users add to automation graphs
 * 2. **Service Definitions**: Flat declarations of services (OAuth2, HTTP Proxy, Variables, Groups, OneOf)
 * 3. **System Services**: String array referencing service definitions used at the plugin level
 *
 * ## Service Architecture
 *
 * **Service definitions are ALWAYS flat** - they exist at the top level of the manifest
 * and are never nested within each other. This includes:
 * - Oauth2Definition
 * - HttpProxyDefinition
 * - VariableDefinition
 * - GroupedDefinition (references other flat definitions)
 * - OneOfDefinition (references other flat definitions)
 *
 * **Services are referenced by name as strings**. Service lists are string arrays where each
 * string must match a ServiceDefinition's `name`. Services exist at two levels:
 * - `system_services`: Plugin-level services configured once for the entire plugin
 * - `user_services` (in Vertex): Vertex-level services configured per vertex instance
 *
 * The `optional` field in ServiceDefinition controls whether a service must be configured:
 * - `optional: false` (default): User MUST configure this service
 * - `optional: true`: User MAY skip configuring this service
 *
 * ## Example Structure
 *
 * ```protobuf
 * Manifest {
 *   name: "stripe_plugin"
 *   version: "1.0.0"
 *
 *   // Flat service definitions at manifest level
 *   service_definitions: [
 *     { name: "stripe_oauth", oauth2: {...} },
 *     { name: "stripe_api", http_proxy: {...} },
 *     { name: "webhook_secret", variable: {...} }
 *   ]
 *
 *   // System-level services (plugin-wide)
 *   // Each string references a service definition name
 *   system_services: ["stripe_oauth"]
 *
 *   // Vertices with their own service references
 *   vertices: [
 *     {
 *       name: "CreatePayment",
 *       user_services: ["stripe_api", "webhook_secret"]
 *     }
 *   ]
 * }
 * ```
 *
 * ## Security Considerations
 *
 * The platform ensures that secrets and certificates are stored and transmitted securely.
 *
 * *** Plugin authors must also ensure that their implementations
 * handle sensitive data appropriately! ***
 *
 * @generated from message mochabugapis.adapt.plugins.v1.Manifest
 */
export type Manifest = Message<"mochabugapis.adapt.plugins.v1.Manifest"> & {
    /**
     * 'name' is the alpha-numeric identifier of the plugin. Must be conform to a ES variable name
     *
     * @generated from field: string name = 1;
     */
    name: string;
    /**
     * 'version' is the plugin's version, following SemVer 2.0: https://semver.org/
     *
     * @generated from field: string version = 2;
     */
    version: string;
    /**
     * 'label' is a human-friendly label displayed in the UI.
     *
     * @generated from field: string label = 3;
     */
    label: string;
    /**
     * 'description' is a short, human-friendly description displayed in the UI.
     *
     * @generated from field: string description = 4;
     */
    description: string;
    /**
     * 'organization' is the id of the organization the user belongs to.
     *
     * @generated from field: string organization = 5;
     */
    organization: string;
    /**
     * 'homepage' is the plugin's homepage URL.
     *
     * @generated from field: optional string homepage = 6;
     */
    homepage?: string;
    /**
     * 'repository' is the plugin's repository URL.
     *
     * @generated from field: optional string repository = 7;
     */
    repository?: string;
    /**
     * 'bugs' is the URL or email for reporting bugs.
     *
     * @generated from field: optional string bugs = 8;
     */
    bugs?: string;
    /**
     * 'author' is the name of the plugin's author.
     *
     * @generated from field: optional string author = 9;
     */
    author?: string;
    /**
     * 'logo' is an optional path to the plugin logo.
     * The logo will be resized to a maximum of 80x80 pixels.
     * - 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 = 10;
     */
    logo?: string;
    /**
     * 'vertices' is a list of vertices that constitute the plugin.
     * this is filled in automatically when configurating a project on the filesystem
     *
     * @generated from field: repeated mochabugapis.adapt.plugins.v1.Vertex vertices = 11;
     */
    vertices: Vertex[];
    /**
     * 'service_definitions' are flat service definitions that can be referenced by bindings.
     *
     * All service definitions exist at this top level - they are NEVER nested.
     * Definitions can be referenced by:
     * - system_services (plugin-level bindings)
     * - user_services in vertices (vertex-level bindings)
     *
     * Each definition has a unique name used for referencing in bindings.
     * Service types: OAuth2, HTTP Proxy, Variable, Group, OneOf.
     *
     * @generated from field: repeated mochabugapis.adapt.plugins.v1.ServiceDefinition service_definitions = 12;
     */
    serviceDefinitions: ServiceDefinition[];
    /**
     * 'system_services' are plugin-level services configured once for the entire plugin.
     *
     * System services are:
     * - Configured by plugin administrators (via PostPluginSettings API)
     * - Shared across all vertices in the plugin
     * - Required to be configured before the plugin can be used (status = ACTIVE), unless marked optional
     *
     * This is a string array where each string directly references a ServiceDefinition by its name.
     * Plugin code accesses these services using the referenced service name.
     *
     * The `optional` field in the ServiceDefinition controls whether configuration is required:
     * - If ServiceDefinition.optional = false (default): MUST be configured
     * - If ServiceDefinition.optional = true: MAY be skipped
     *
     * Example:
     *   service_definitions: [
     *     { name: "github_oauth", oauth2: {...} },
     *     { name: "analytics", oauth2: {...}, optional: true }
     *   ]
     *   system_services: ["github_oauth", "analytics"]
     *   Plugin code references: "github_oauth", "analytics"
     *
     * IMPORTANT: For OAuth2 CODE grant type services, the service definition name is used
     * for callback URL generation.
     *
     * @generated from field: repeated string system_services = 13;
     */
    systemServices: string[];
};
/**
 * Manifest describes a plugin and its properties.
 *
 * ## Architecture Overview
 *
 * A plugin consists of:
 * 1. **Vertices**: The actual workflow nodes that users add to automation graphs
 * 2. **Service Definitions**: Flat declarations of services (OAuth2, HTTP Proxy, Variables, Groups, OneOf)
 * 3. **System Services**: String array referencing service definitions used at the plugin level
 *
 * ## Service Architecture
 *
 * **Service definitions are ALWAYS flat** - they exist at the top level of the manifest
 * and are never nested within each other. This includes:
 * - Oauth2Definition
 * - HttpProxyDefinition
 * - VariableDefinition
 * - GroupedDefinition (references other flat definitions)
 * - OneOfDefinition (references other flat definitions)
 *
 * **Services are referenced by name as strings**. Service lists are string arrays where each
 * string must match a ServiceDefinition's `name`. Services exist at two levels:
 * - `system_services`: Plugin-level services configured once for the entire plugin
 * - `user_services` (in Vertex): Vertex-level services configured per vertex instance
 *
 * The `optional` field in ServiceDefinition controls whether a service must be configured:
 * - `optional: false` (default): User MUST configure this service
 * - `optional: true`: User MAY skip configuring this service
 *
 * ## Example Structure
 *
 * ```protobuf
 * Manifest {
 *   name: "stripe_plugin"
 *   version: "1.0.0"
 *
 *   // Flat service definitions at manifest level
 *   service_definitions: [
 *     { name: "stripe_oauth", oauth2: {...} },
 *     { name: "stripe_api", http_proxy: {...} },
 *     { name: "webhook_secret", variable: {...} }
 *   ]
 *
 *   // System-level services (plugin-wide)
 *   // Each string references a service definition name
 *   system_services: ["stripe_oauth"]
 *
 *   // Vertices with their own service references
 *   vertices: [
 *     {
 *       name: "CreatePayment",
 *       user_services: ["stripe_api", "webhook_secret"]
 *     }
 *   ]
 * }
 * ```
 *
 * ## Security Considerations
 *
 * The platform ensures that secrets and certificates are stored and transmitted securely.
 *
 * *** Plugin authors must also ensure that their implementations
 * handle sensitive data appropriately! ***
 *
 * @generated from message mochabugapis.adapt.plugins.v1.Manifest
 */
export type ManifestJson = {
    /**
     * 'name' is the alpha-numeric identifier of the plugin. Must be conform to a ES variable name
     *
     * @generated from field: string name = 1;
     */
    name?: string;
    /**
     * 'version' is the plugin's version, following SemVer 2.0: https://semver.org/
     *
     * @generated from field: string version = 2;
     */
    version?: string;
    /**
     * 'label' is a human-friendly label displayed in the UI.
     *
     * @generated from field: string label = 3;
     */
    label?: string;
    /**
     * 'description' is a short, human-friendly description displayed in the UI.
     *
     * @generated from field: string description = 4;
     */
    description?: string;
    /**
     * 'organization' is the id of the organization the user belongs to.
     *
     * @generated from field: string organization = 5;
     */
    organization?: string;
    /**
     * 'homepage' is the plugin's homepage URL.
     *
     * @generated from field: optional string homepage = 6;
     */
    homepage?: string;
    /**
     * 'repository' is the plugin's repository URL.
     *
     * @generated from field: optional string repository = 7;
     */
    repository?: string;
    /**
     * 'bugs' is the URL or email for reporting bugs.
     *
     * @generated from field: optional string bugs = 8;
     */
    bugs?: string;
    /**
     * 'author' is the name of the plugin's author.
     *
     * @generated from field: optional string author = 9;
     */
    author?: string;
    /**
     * 'logo' is an optional path to the plugin logo.
     * The logo will be resized to a maximum of 80x80 pixels.
     * - 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 = 10;
     */
    logo?: string;
    /**
     * 'vertices' is a list of vertices that constitute the plugin.
     * this is filled in automatically when configurating a project on the filesystem
     *
     * @generated from field: repeated mochabugapis.adapt.plugins.v1.Vertex vertices = 11;
     */
    vertices?: VertexJson[];
    /**
     * 'service_definitions' are flat service definitions that can be referenced by bindings.
     *
     * All service definitions exist at this top level - they are NEVER nested.
     * Definitions can be referenced by:
     * - system_services (plugin-level bindings)
     * - user_services in vertices (vertex-level bindings)
     *
     * Each definition has a unique name used for referencing in bindings.
     * Service types: OAuth2, HTTP Proxy, Variable, Group, OneOf.
     *
     * @generated from field: repeated mochabugapis.adapt.plugins.v1.ServiceDefinition service_definitions = 12;
     */
    serviceDefinitions?: ServiceDefinitionJson[];
    /**
     * 'system_services' are plugin-level services configured once for the entire plugin.
     *
     * System services are:
     * - Configured by plugin administrators (via PostPluginSettings API)
     * - Shared across all vertices in the plugin
     * - Required to be configured before the plugin can be used (status = ACTIVE), unless marked optional
     *
     * This is a string array where each string directly references a ServiceDefinition by its name.
     * Plugin code accesses these services using the referenced service name.
     *
     * The `optional` field in the ServiceDefinition controls whether configuration is required:
     * - If ServiceDefinition.optional = false (default): MUST be configured
     * - If ServiceDefinition.optional = true: MAY be skipped
     *
     * Example:
     *   service_definitions: [
     *     { name: "github_oauth", oauth2: {...} },
     *     { name: "analytics", oauth2: {...}, optional: true }
     *   ]
     *   system_services: ["github_oauth", "analytics"]
     *   Plugin code references: "github_oauth", "analytics"
     *
     * IMPORTANT: For OAuth2 CODE grant type services, the service definition name is used
     * for callback URL generation.
     *
     * @generated from field: repeated string system_services = 13;
     */
    systemServices?: string[];
};
/**
 * Describes the message mochabugapis.adapt.plugins.v1.Manifest.
 * Use `create(ManifestSchema)` to create a new message.
 */
export declare const ManifestSchema: GenMessage<Manifest, {
    jsonType: ManifestJson;
}>;
//# sourceMappingURL=manifest_pb.d.ts.map