import { type ToolInputType, type ToolOutputType } from './tool.metadata'; declare global { /** * Declarative metadata extends to the Job decorator. */ interface ExtendFrontMcpJobMetadata { } } export type JobPermissionAction = 'create' | 'read' | 'update' | 'delete' | 'execute' | 'list'; export interface JobPermission { action: JobPermissionAction; roles?: string[]; scopes?: string[]; custom?: (authInfo: Partial>) => boolean | Promise; } export interface JobRetryConfig { /** Maximum number of retry attempts. Default: 3 */ maxAttempts?: number; /** Initial backoff delay in ms. Default: 1000 */ backoffMs?: number; /** Backoff multiplier. Default: 2 */ backoffMultiplier?: number; /** Maximum backoff delay in ms. Default: 60000 */ maxBackoffMs?: number; } /** * Declarative metadata describing what a Job contributes. * Jobs are pure executable units with strict input/output schemas. */ export interface JobMetadata extends ExtendFrontMcpJobMetadata { /** * Optional unique identifier for the job. * If omitted, derived from the class or file name. */ id?: string; /** * Human-readable name of the job, used in UIs, logs, and discovery. */ name: string; /** * Short summary describing what the job does. */ description?: string; /** * Zod schema describing the expected input payload. REQUIRED. */ inputSchema: InSchema; /** * Zod schema describing the expected output payload. REQUIRED. */ outputSchema: OutSchema; /** * Maximum execution time in milliseconds. Default: 300000 (5 min). */ timeout?: number; /** * Retry configuration for failed executions. */ retry?: JobRetryConfig; /** * Tags for categorization and filtering. */ tags?: string[]; /** * Labels for fine-grained categorization. */ labels?: Record; /** * If true, the job will not be shown in discovery/listing. * Default: false */ hideFromDiscovery?: boolean; /** * Permission rules for this job. */ permissions?: JobPermission[]; } export declare const frontMcpJobMetadataSchema: import("@frontmcp/lazy-zod").ZodObject<{ id: import("@frontmcp/lazy-zod").ZodOptional; name: import("@frontmcp/lazy-zod").ZodString; description: import("@frontmcp/lazy-zod").ZodOptional; inputSchema: import("zod").ZodCustom; outputSchema: import("zod").ZodCustom; timeout: import("@frontmcp/lazy-zod").ZodDefault>; retry: import("@frontmcp/lazy-zod").ZodOptional>; backoffMs: import("@frontmcp/lazy-zod").ZodDefault>; backoffMultiplier: import("@frontmcp/lazy-zod").ZodDefault>; maxBackoffMs: import("@frontmcp/lazy-zod").ZodDefault>; }, import("zod/v4/core").$strip>>; tags: import("@frontmcp/lazy-zod").ZodOptional>; labels: import("@frontmcp/lazy-zod").ZodOptional>; hideFromDiscovery: import("@frontmcp/lazy-zod").ZodDefault>; permissions: import("@frontmcp/lazy-zod").ZodOptional; roles: import("@frontmcp/lazy-zod").ZodOptional>; scopes: import("@frontmcp/lazy-zod").ZodOptional>; custom: import("@frontmcp/lazy-zod").ZodOptional>; }, import("zod/v4/core").$strip>>>; }, import("zod/v4/core").$loose>; //# sourceMappingURL=job.metadata.d.ts.map