import { z } from '@frontmcp/lazy-zod'; import type { AdapterType, AgentType, AuthProviderType, ChannelType, JobType, PluginType, PromptType, ProviderType, ResourceType, SkillType, ToolType, WorkflowType } from '../interfaces'; import { type AuthOptionsInput } from '../types'; import { type AppFilterConfig } from './app-filter.metadata'; import { type OutputPolicy } from './output-policy'; import { type EsmOptions, type RemoteOptions } from './remote-primitive.metadata'; /** * Declarative metadata describing what a local mcp app contributes at app scope. * * Includes dependency providers, app-scoped plugins, adapters (that can * generate tools/resources/prompts from external definitions), and any * inline tools authored in the app. Adapter-generated items inherit the * app’s plugins and policies and are tagged with provenance. */ export interface LocalAppMetadata { /** * Human-friendly name for this app as shown in UIs, logs, and describe reports. * Keep it short, stable, and unique within a gateway (consider prefixes). */ id?: string; /** * Human-friendly name for this app as shown in UIs, logs, and describe reports. * Keep it short, stable, and unique within a gateway (consider prefixes). */ name: string; /** * Optional longer explanation of what the app does and what it exposes. * Used for documentation, describe reports, and UIs. Avoid secrets/PII. */ description?: string; /** * Named singleton (or scoped-singleton) dependencies used by tools/plugins at runtime * — e.g., config, database pools, Redis clients, queues, KMS. * * Resolution is hierarchical (tool → app → gateway). Providers may depend on * other providers and are usually initialized lazily on first use. */ providers?: ProviderType[]; /** * Named singleton / session auth provider to be used by tools/plugins at runtime * — e.g., GithubAuthProvider, GoogleAuthProvider, etc. * * Note: this is different from providers, which are used for calling fetch request * with specific auth context headers. * * Resolution is hierarchical (tool → app → gateway). Providers may depend on * other providers and are usually initialized lazily on first use. */ authProviders?: AuthProviderType[]; /** * App-scoped plugins that participate in lifecycle events and can contribute * additional capabilities (tools, resources, prompts, providers, adapters). * Use plugins to enforce policy, auth, PII reduction, tracing, etc. */ plugins?: PluginType[]; /** * Adapters attached to this app that convert external definitions or sources * (e.g., OpenAPI, Lambda, Custom) into generated tools/resources/prompts. * Common options include include/exclude filters, name prefixes, base URLs, * and authentication (often provided by plugins). */ adapters?: AdapterType[]; /** * Inline tools authored by this app (via builder or class). These are active * actions with input/output schemas that the model can call. Tools generated * by adapters do not need to be listed here. */ tools?: ToolType[]; resources?: ResourceType[]; prompts?: PromptType[]; /** * Autonomous AI agents with their own LLM providers and isolated scopes. * Each agent is automatically exposed as a callable tool with the name * `use-agent:`. Agents can have nested tools, resources, prompts, * and even other agents. */ agents?: AgentType[]; /** * Skills that teach AI how to perform multi-step tasks using tools. * Skills are workflow guides that combine multiple tools into coherent * recipes. They can be discovered via the `skill://index.json` MCP * resource and loaded via `skill://{+skillPath}/SKILL.md` MCP resources * (per MCP SEP-2640). */ skills?: SkillType[]; /** * Jobs registered by this app. * Jobs are pure executable units with strict input/output schemas. */ jobs?: JobType[]; /** * Workflows registered by this app. * Workflows connect jobs into managed steps with triggers. */ workflows?: WorkflowType[]; /** * Notification channels registered by this app. * Channels push real-time events to Claude Code sessions via the * `notifications/claude/channel` experimental extension. */ channels?: ChannelType[]; /** * Configures the app's default authentication provider. * If not provided, the app will use the gateway's default auth provider. */ auth?: AuthOptionsInput; /** * Output policy for this app's tools — overrides the server (`@FrontMcp`), * overridden by `@Tool`. See `@FrontMcp({ output })` for the fields. */ output?: OutputPolicy; /** * If true, the app will NOT be included and will act as a separated scope. * If false, the app will be included in MultiApp frontmcp server. * If 'includeInParent', the app will be included in the gateway's * standalone app list and will act as a separated scope under the appName prefix */ standalone?: 'includeInParent' | boolean; } export declare const frontMcpLocalAppMetadataSchema: import("@frontmcp/lazy-zod").ZodObject<{ id: import("@frontmcp/lazy-zod").ZodOptional; name: import("@frontmcp/lazy-zod").ZodString; __sourceDir: import("@frontmcp/lazy-zod").ZodOptional; description: import("@frontmcp/lazy-zod").ZodOptional; providers: import("@frontmcp/lazy-zod").ZodDefault, import("libs/di/dist/interfaces/base.interface").Type>>>>; authProviders: import("@frontmcp/lazy-zod").ZodDefault, import("libs/di/dist/interfaces/base.interface").Type>>>>; plugins: import("@frontmcp/lazy-zod").ZodOptional, import("libs/di/dist/interfaces/base.interface").Type>>>; adapters: import("@frontmcp/lazy-zod").ZodOptional, import("libs/di/dist/interfaces/base.interface").Type>>>; tools: import("@frontmcp/lazy-zod").ZodOptional, string | import("libs/di/dist/interfaces/base.interface").Type>>>; resources: import("@frontmcp/lazy-zod").ZodOptional, import("libs/di/dist/interfaces/base.interface").Type>>>; prompts: import("@frontmcp/lazy-zod").ZodOptional, import("libs/di/dist/interfaces/base.interface").Type>>>; agents: import("@frontmcp/lazy-zod").ZodOptional>>; skills: import("@frontmcp/lazy-zod").ZodOptional, import("libs/di/dist/interfaces/base.interface").Type>>>; jobs: import("@frontmcp/lazy-zod").ZodOptional, import("libs/di/dist/interfaces/base.interface").Type>>>; workflows: import("@frontmcp/lazy-zod").ZodOptional, import("libs/di/dist/interfaces/base.interface").Type>>>; channels: import("@frontmcp/lazy-zod").ZodOptional, import("libs/di/dist/interfaces/base.interface").Type>>>; auth: import("@frontmcp/lazy-zod").ZodOptional; issuer: import("@frontmcp/lazy-zod").ZodOptional; sessionTtl: import("@frontmcp/lazy-zod").ZodDefault; anonymousScopes: import("@frontmcp/lazy-zod").ZodDefault>; publicAccess: import("@frontmcp/lazy-zod").ZodOptional, import("@frontmcp/lazy-zod").ZodArray]>>; prompts: import("@frontmcp/lazy-zod").ZodDefault, import("@frontmcp/lazy-zod").ZodArray]>>; rateLimit: import("@frontmcp/lazy-zod").ZodDefault; }, import("zod/v4/core").$strip>>; jwks: import("@frontmcp/lazy-zod").ZodOptional>; }, import("zod/v4/core").$strip>>; signKey: import("@frontmcp/lazy-zod").ZodOptional, import("zod").ZodCustom, Uint8Array>]>>; }, import("zod/v4/core").$strip>, import("@frontmcp/lazy-zod").ZodObject<{ expectedAudience: import("@frontmcp/lazy-zod").ZodOptional]>>; requireAudience: import("@frontmcp/lazy-zod").ZodOptional; requiredScopes: import("@frontmcp/lazy-zod").ZodDefault>; allowAnonymous: import("@frontmcp/lazy-zod").ZodDefault; anonymousScopes: import("@frontmcp/lazy-zod").ZodDefault>; publicAccess: import("@frontmcp/lazy-zod").ZodOptional, import("@frontmcp/lazy-zod").ZodArray]>>; prompts: import("@frontmcp/lazy-zod").ZodDefault, import("@frontmcp/lazy-zod").ZodArray]>>; rateLimit: import("@frontmcp/lazy-zod").ZodDefault; }, import("zod/v4/core").$strip>>; provider: import("@frontmcp/lazy-zod").ZodString; clientId: import("@frontmcp/lazy-zod").ZodOptional; clientSecret: import("@frontmcp/lazy-zod").ZodOptional; scopes: import("@frontmcp/lazy-zod").ZodOptional>; providerConfig: import("@frontmcp/lazy-zod").ZodOptional; id: import("@frontmcp/lazy-zod").ZodOptional; jwks: import("@frontmcp/lazy-zod").ZodOptional>; }, import("zod/v4/core").$strip>>; jwksUri: import("@frontmcp/lazy-zod").ZodOptional; additionalIssuers: import("@frontmcp/lazy-zod").ZodOptional>; verifyIssuer: import("@frontmcp/lazy-zod").ZodOptional; dcrEnabled: import("@frontmcp/lazy-zod").ZodDefault; authEndpoint: import("@frontmcp/lazy-zod").ZodOptional; tokenEndpoint: import("@frontmcp/lazy-zod").ZodOptional; registrationEndpoint: import("@frontmcp/lazy-zod").ZodOptional; userInfoEndpoint: import("@frontmcp/lazy-zod").ZodOptional; }, import("zod/v4/core").$strip>>; mode: import("@frontmcp/lazy-zod").ZodLiteral<"transparent">; }, import("zod/v4/core").$strip>, import("@frontmcp/lazy-zod").ZodObject<{ requireEmail: import("@frontmcp/lazy-zod").ZodDefault; anonymousSubject: import("@frontmcp/lazy-zod").ZodDefault; login: import("@frontmcp/lazy-zod").ZodOptional; subtitle: import("@frontmcp/lazy-zod").ZodOptional; logoUri: import("@frontmcp/lazy-zod").ZodOptional; fields: import("@frontmcp/lazy-zod").ZodOptional; label: import("@frontmcp/lazy-zod").ZodOptional; required: import("@frontmcp/lazy-zod").ZodOptional; placeholder: import("@frontmcp/lazy-zod").ZodOptional; options: import("@frontmcp/lazy-zod").ZodOptional>>; }, import("zod/v4/core").$strip>>>; render: import("@frontmcp/lazy-zod").ZodOptional string, (ctx: import("libs/auth/dist/options/interfaces").LoginRenderContext) => string>>; subject: import("@frontmcp/lazy-zod").ZodOptional; strategy: import("@frontmcp/lazy-zod").ZodOptional>; }, import("zod/v4/core").$strip>>; }, import("zod/v4/core").$strip>>; authenticate: import("@frontmcp/lazy-zod").ZodOptional>; providers: import("@frontmcp/lazy-zod").ZodOptional; authorizationEndpoint: import("@frontmcp/lazy-zod").ZodOptional; authorizeUrl: import("@frontmcp/lazy-zod").ZodOptional; tokenEndpoint: import("@frontmcp/lazy-zod").ZodOptional; tokenUrl: import("@frontmcp/lazy-zod").ZodOptional; clientId: import("@frontmcp/lazy-zod").ZodString; clientSecret: import("@frontmcp/lazy-zod").ZodOptional; scopes: import("@frontmcp/lazy-zod").ZodOptional>; userInfoEndpoint: import("@frontmcp/lazy-zod").ZodOptional; jwksUri: import("@frontmcp/lazy-zod").ZodOptional; }, import("zod/v4/core").$strip>>>; dcr: import("@frontmcp/lazy-zod").ZodOptional; allowedRedirectUris: import("@frontmcp/lazy-zod").ZodOptional>; allowedClientIds: import("@frontmcp/lazy-zod").ZodOptional>; initialAccessToken: import("@frontmcp/lazy-zod").ZodOptional; clients: import("@frontmcp/lazy-zod").ZodOptional; redirectUris: import("@frontmcp/lazy-zod").ZodArray; clientName: import("@frontmcp/lazy-zod").ZodOptional; tokenEndpointAuthMethod: import("@frontmcp/lazy-zod").ZodDefault>; grantTypes: import("@frontmcp/lazy-zod").ZodDefault>>; responseTypes: import("@frontmcp/lazy-zod").ZodDefault>>; scope: import("@frontmcp/lazy-zod").ZodOptional; }, import("zod/v4/core").$strip>>>; maxDynamicClients: import("@frontmcp/lazy-zod").ZodOptional; }, import("zod/v4/core").$strip>>; local: import("@frontmcp/lazy-zod").ZodOptional, import("zod").ZodCustom, Uint8Array>]>>; jwks: import("@frontmcp/lazy-zod").ZodOptional>; }, import("zod/v4/core").$strip>>; issuer: import("@frontmcp/lazy-zod").ZodOptional; }, import("zod/v4/core").$strip>>; tokenStorage: import("@frontmcp/lazy-zod").ZodDefault, import("@frontmcp/lazy-zod").ZodObject<{ redis: import("@frontmcp/lazy-zod").ZodObject<{ host: import("@frontmcp/lazy-zod").ZodString; port: import("@frontmcp/lazy-zod").ZodDefault>; password: import("@frontmcp/lazy-zod").ZodOptional; db: import("@frontmcp/lazy-zod").ZodDefault>; tls: import("@frontmcp/lazy-zod").ZodDefault>; keyPrefix: import("@frontmcp/lazy-zod").ZodDefault>; defaultTtlMs: import("@frontmcp/lazy-zod").ZodDefault>; }, import("zod/v4/core").$strip>; }, import("zod/v4/core").$strip>, import("@frontmcp/lazy-zod").ZodObject<{ sqlite: import("@frontmcp/lazy-zod").ZodObject<{ path: import("@frontmcp/lazy-zod").ZodString; encryption: import("@frontmcp/lazy-zod").ZodOptional>; ttlCleanupIntervalMs: import("@frontmcp/lazy-zod").ZodOptional; walMode: import("@frontmcp/lazy-zod").ZodOptional; }, import("zod/v4/core").$strip>; }, import("zod/v4/core").$strip>]>>; secureStore: import("@frontmcp/lazy-zod").ZodOptional, import("@frontmcp/lazy-zod").ZodObject<{ scope: import("@frontmcp/lazy-zod").ZodOptional>; ttlMs: import("@frontmcp/lazy-zod").ZodOptional; encryption: import("@frontmcp/lazy-zod").ZodOptional; }, import("zod/v4/core").$strip>>; sqlite: import("@frontmcp/lazy-zod").ZodObject<{ path: import("@frontmcp/lazy-zod").ZodString; encryption: import("@frontmcp/lazy-zod").ZodOptional>; ttlCleanupIntervalMs: import("@frontmcp/lazy-zod").ZodOptional; walMode: import("@frontmcp/lazy-zod").ZodOptional; }, import("zod/v4/core").$strip>; }, import("zod/v4/core").$strip>, import("@frontmcp/lazy-zod").ZodObject<{ scope: import("@frontmcp/lazy-zod").ZodOptional>; ttlMs: import("@frontmcp/lazy-zod").ZodOptional; encryption: import("@frontmcp/lazy-zod").ZodOptional; }, import("zod/v4/core").$strip>>; redis: import("@frontmcp/lazy-zod").ZodObject<{ host: import("@frontmcp/lazy-zod").ZodString; port: import("@frontmcp/lazy-zod").ZodDefault>; password: import("@frontmcp/lazy-zod").ZodOptional; db: import("@frontmcp/lazy-zod").ZodDefault>; tls: import("@frontmcp/lazy-zod").ZodDefault>; keyPrefix: import("@frontmcp/lazy-zod").ZodDefault>; defaultTtlMs: import("@frontmcp/lazy-zod").ZodDefault>; }, import("zod/v4/core").$strip>; }, import("zod/v4/core").$strip>, import("@frontmcp/lazy-zod").ZodObject<{ scope: import("@frontmcp/lazy-zod").ZodOptional>; ttlMs: import("@frontmcp/lazy-zod").ZodOptional; encryption: import("@frontmcp/lazy-zod").ZodOptional; }, import("zod/v4/core").$strip>>; backend: import("zod").ZodCustom; }, import("zod/v4/core").$strip>, import("@frontmcp/lazy-zod").ZodObject<{ scope: import("@frontmcp/lazy-zod").ZodOptional>; ttlMs: import("@frontmcp/lazy-zod").ZodOptional; encryption: import("@frontmcp/lazy-zod").ZodOptional; }, import("zod/v4/core").$strip>>; }, import("zod/v4/core").$strip>]>>; allowDefaultPublic: import("@frontmcp/lazy-zod").ZodDefault; anonymousScopes: import("@frontmcp/lazy-zod").ZodDefault>; publicAccess: import("@frontmcp/lazy-zod").ZodOptional, import("@frontmcp/lazy-zod").ZodArray]>>; prompts: import("@frontmcp/lazy-zod").ZodDefault, import("@frontmcp/lazy-zod").ZodArray]>>; rateLimit: import("@frontmcp/lazy-zod").ZodDefault; }, import("zod/v4/core").$strip>>; consent: import("@frontmcp/lazy-zod").ZodOptional; groupByApp: import("@frontmcp/lazy-zod").ZodDefault; showDescriptions: import("@frontmcp/lazy-zod").ZodDefault; allowSelectAll: import("@frontmcp/lazy-zod").ZodDefault; requireSelection: import("@frontmcp/lazy-zod").ZodDefault; customMessage: import("@frontmcp/lazy-zod").ZodOptional; rememberConsent: import("@frontmcp/lazy-zod").ZodDefault; excludedTools: import("@frontmcp/lazy-zod").ZodOptional>; defaultSelectedTools: import("@frontmcp/lazy-zod").ZodOptional>; }, import("zod/v4/core").$strip>>; federatedAuth: import("@frontmcp/lazy-zod").ZodOptional>; minProviders: import("@frontmcp/lazy-zod").ZodOptional; requiredProviders: import("@frontmcp/lazy-zod").ZodOptional>; }, import("zod/v4/core").$strip>>; refresh: import("@frontmcp/lazy-zod").ZodOptional; skewSeconds: import("@frontmcp/lazy-zod").ZodDefault; }, import("zod/v4/core").$strip>>; expectedAudience: import("@frontmcp/lazy-zod").ZodOptional]>>; incrementalAuth: import("@frontmcp/lazy-zod").ZodOptional; skippedAppBehavior: import("@frontmcp/lazy-zod").ZodDefault>; allowSkip: import("@frontmcp/lazy-zod").ZodDefault; showAllAppsAtOnce: import("@frontmcp/lazy-zod").ZodDefault; }, import("zod/v4/core").$strip>>; requireRegisteredClients: import("@frontmcp/lazy-zod").ZodDefault; cimd: import("@frontmcp/lazy-zod").ZodOptional; cache: import("@frontmcp/lazy-zod").ZodOptional>; defaultTtlMs: import("@frontmcp/lazy-zod").ZodDefault; maxTtlMs: import("@frontmcp/lazy-zod").ZodDefault; minTtlMs: import("@frontmcp/lazy-zod").ZodDefault; redis: import("@frontmcp/lazy-zod").ZodOptional; host: import("@frontmcp/lazy-zod").ZodOptional; port: import("@frontmcp/lazy-zod").ZodOptional; password: import("@frontmcp/lazy-zod").ZodOptional; db: import("@frontmcp/lazy-zod").ZodOptional; tls: import("@frontmcp/lazy-zod").ZodOptional; keyPrefix: import("@frontmcp/lazy-zod").ZodDefault; }, import("zod/v4/core").$strip>>; }, import("zod/v4/core").$strip>>; security: import("@frontmcp/lazy-zod").ZodOptional; allowedDomains: import("@frontmcp/lazy-zod").ZodOptional>; blockedDomains: import("@frontmcp/lazy-zod").ZodOptional>; warnOnLocalhostRedirects: import("@frontmcp/lazy-zod").ZodDefault; allowInsecureForTesting: import("@frontmcp/lazy-zod").ZodDefault; }, import("zod/v4/core").$strip>>; network: import("@frontmcp/lazy-zod").ZodOptional; maxResponseSizeBytes: import("@frontmcp/lazy-zod").ZodDefault; redirectPolicy: import("@frontmcp/lazy-zod").ZodDefault>; maxRedirects: import("@frontmcp/lazy-zod").ZodDefault; }, import("zod/v4/core").$strip>>; }, import("zod/v4/core").$strip>>; ui: import("@frontmcp/lazy-zod").ZodOptional & import("zod/v4/core").$partial, import("@frontmcp/lazy-zod").ZodString>>; extras: import("@frontmcp/lazy-zod").ZodOptional>>; mode: import("@frontmcp/lazy-zod").ZodLiteral<"local">; }, import("zod/v4/core").$strip>, import("@frontmcp/lazy-zod").ZodObject<{ local: import("@frontmcp/lazy-zod").ZodOptional, import("zod").ZodCustom, Uint8Array>]>>; jwks: import("@frontmcp/lazy-zod").ZodOptional>; }, import("zod/v4/core").$strip>>; issuer: import("@frontmcp/lazy-zod").ZodOptional; }, import("zod/v4/core").$strip>>; tokenStorage: import("@frontmcp/lazy-zod").ZodDefault, import("@frontmcp/lazy-zod").ZodObject<{ redis: import("@frontmcp/lazy-zod").ZodObject<{ host: import("@frontmcp/lazy-zod").ZodString; port: import("@frontmcp/lazy-zod").ZodDefault>; password: import("@frontmcp/lazy-zod").ZodOptional; db: import("@frontmcp/lazy-zod").ZodDefault>; tls: import("@frontmcp/lazy-zod").ZodDefault>; keyPrefix: import("@frontmcp/lazy-zod").ZodDefault>; defaultTtlMs: import("@frontmcp/lazy-zod").ZodDefault>; }, import("zod/v4/core").$strip>; }, import("zod/v4/core").$strip>, import("@frontmcp/lazy-zod").ZodObject<{ sqlite: import("@frontmcp/lazy-zod").ZodObject<{ path: import("@frontmcp/lazy-zod").ZodString; encryption: import("@frontmcp/lazy-zod").ZodOptional>; ttlCleanupIntervalMs: import("@frontmcp/lazy-zod").ZodOptional; walMode: import("@frontmcp/lazy-zod").ZodOptional; }, import("zod/v4/core").$strip>; }, import("zod/v4/core").$strip>]>>; secureStore: import("@frontmcp/lazy-zod").ZodOptional, import("@frontmcp/lazy-zod").ZodObject<{ scope: import("@frontmcp/lazy-zod").ZodOptional>; ttlMs: import("@frontmcp/lazy-zod").ZodOptional; encryption: import("@frontmcp/lazy-zod").ZodOptional; }, import("zod/v4/core").$strip>>; sqlite: import("@frontmcp/lazy-zod").ZodObject<{ path: import("@frontmcp/lazy-zod").ZodString; encryption: import("@frontmcp/lazy-zod").ZodOptional>; ttlCleanupIntervalMs: import("@frontmcp/lazy-zod").ZodOptional; walMode: import("@frontmcp/lazy-zod").ZodOptional; }, import("zod/v4/core").$strip>; }, import("zod/v4/core").$strip>, import("@frontmcp/lazy-zod").ZodObject<{ scope: import("@frontmcp/lazy-zod").ZodOptional>; ttlMs: import("@frontmcp/lazy-zod").ZodOptional; encryption: import("@frontmcp/lazy-zod").ZodOptional; }, import("zod/v4/core").$strip>>; redis: import("@frontmcp/lazy-zod").ZodObject<{ host: import("@frontmcp/lazy-zod").ZodString; port: import("@frontmcp/lazy-zod").ZodDefault>; password: import("@frontmcp/lazy-zod").ZodOptional; db: import("@frontmcp/lazy-zod").ZodDefault>; tls: import("@frontmcp/lazy-zod").ZodDefault>; keyPrefix: import("@frontmcp/lazy-zod").ZodDefault>; defaultTtlMs: import("@frontmcp/lazy-zod").ZodDefault>; }, import("zod/v4/core").$strip>; }, import("zod/v4/core").$strip>, import("@frontmcp/lazy-zod").ZodObject<{ scope: import("@frontmcp/lazy-zod").ZodOptional>; ttlMs: import("@frontmcp/lazy-zod").ZodOptional; encryption: import("@frontmcp/lazy-zod").ZodOptional; }, import("zod/v4/core").$strip>>; backend: import("zod").ZodCustom; }, import("zod/v4/core").$strip>, import("@frontmcp/lazy-zod").ZodObject<{ scope: import("@frontmcp/lazy-zod").ZodOptional>; ttlMs: import("@frontmcp/lazy-zod").ZodOptional; encryption: import("@frontmcp/lazy-zod").ZodOptional; }, import("zod/v4/core").$strip>>; }, import("zod/v4/core").$strip>]>>; allowDefaultPublic: import("@frontmcp/lazy-zod").ZodDefault; anonymousScopes: import("@frontmcp/lazy-zod").ZodDefault>; publicAccess: import("@frontmcp/lazy-zod").ZodOptional, import("@frontmcp/lazy-zod").ZodArray]>>; prompts: import("@frontmcp/lazy-zod").ZodDefault, import("@frontmcp/lazy-zod").ZodArray]>>; rateLimit: import("@frontmcp/lazy-zod").ZodDefault; }, import("zod/v4/core").$strip>>; consent: import("@frontmcp/lazy-zod").ZodOptional; groupByApp: import("@frontmcp/lazy-zod").ZodDefault; showDescriptions: import("@frontmcp/lazy-zod").ZodDefault; allowSelectAll: import("@frontmcp/lazy-zod").ZodDefault; requireSelection: import("@frontmcp/lazy-zod").ZodDefault; customMessage: import("@frontmcp/lazy-zod").ZodOptional; rememberConsent: import("@frontmcp/lazy-zod").ZodDefault; excludedTools: import("@frontmcp/lazy-zod").ZodOptional>; defaultSelectedTools: import("@frontmcp/lazy-zod").ZodOptional>; }, import("zod/v4/core").$strip>>; federatedAuth: import("@frontmcp/lazy-zod").ZodOptional>; minProviders: import("@frontmcp/lazy-zod").ZodOptional; requiredProviders: import("@frontmcp/lazy-zod").ZodOptional>; }, import("zod/v4/core").$strip>>; refresh: import("@frontmcp/lazy-zod").ZodOptional; skewSeconds: import("@frontmcp/lazy-zod").ZodDefault; }, import("zod/v4/core").$strip>>; expectedAudience: import("@frontmcp/lazy-zod").ZodOptional]>>; incrementalAuth: import("@frontmcp/lazy-zod").ZodOptional; skippedAppBehavior: import("@frontmcp/lazy-zod").ZodDefault>; allowSkip: import("@frontmcp/lazy-zod").ZodDefault; showAllAppsAtOnce: import("@frontmcp/lazy-zod").ZodDefault; }, import("zod/v4/core").$strip>>; requireRegisteredClients: import("@frontmcp/lazy-zod").ZodDefault; cimd: import("@frontmcp/lazy-zod").ZodOptional; cache: import("@frontmcp/lazy-zod").ZodOptional>; defaultTtlMs: import("@frontmcp/lazy-zod").ZodDefault; maxTtlMs: import("@frontmcp/lazy-zod").ZodDefault; minTtlMs: import("@frontmcp/lazy-zod").ZodDefault; redis: import("@frontmcp/lazy-zod").ZodOptional; host: import("@frontmcp/lazy-zod").ZodOptional; port: import("@frontmcp/lazy-zod").ZodOptional; password: import("@frontmcp/lazy-zod").ZodOptional; db: import("@frontmcp/lazy-zod").ZodOptional; tls: import("@frontmcp/lazy-zod").ZodOptional; keyPrefix: import("@frontmcp/lazy-zod").ZodDefault; }, import("zod/v4/core").$strip>>; }, import("zod/v4/core").$strip>>; security: import("@frontmcp/lazy-zod").ZodOptional; allowedDomains: import("@frontmcp/lazy-zod").ZodOptional>; blockedDomains: import("@frontmcp/lazy-zod").ZodOptional>; warnOnLocalhostRedirects: import("@frontmcp/lazy-zod").ZodDefault; allowInsecureForTesting: import("@frontmcp/lazy-zod").ZodDefault; }, import("zod/v4/core").$strip>>; network: import("@frontmcp/lazy-zod").ZodOptional; maxResponseSizeBytes: import("@frontmcp/lazy-zod").ZodDefault; redirectPolicy: import("@frontmcp/lazy-zod").ZodDefault>; maxRedirects: import("@frontmcp/lazy-zod").ZodDefault; }, import("zod/v4/core").$strip>>; }, import("zod/v4/core").$strip>>; ui: import("@frontmcp/lazy-zod").ZodOptional & import("zod/v4/core").$partial, import("@frontmcp/lazy-zod").ZodString>>; extras: import("@frontmcp/lazy-zod").ZodOptional>>; provider: import("@frontmcp/lazy-zod").ZodString; clientId: import("@frontmcp/lazy-zod").ZodOptional; clientSecret: import("@frontmcp/lazy-zod").ZodOptional; scopes: import("@frontmcp/lazy-zod").ZodOptional>; providerConfig: import("@frontmcp/lazy-zod").ZodOptional; id: import("@frontmcp/lazy-zod").ZodOptional; jwks: import("@frontmcp/lazy-zod").ZodOptional>; }, import("zod/v4/core").$strip>>; jwksUri: import("@frontmcp/lazy-zod").ZodOptional; additionalIssuers: import("@frontmcp/lazy-zod").ZodOptional>; verifyIssuer: import("@frontmcp/lazy-zod").ZodOptional; dcrEnabled: import("@frontmcp/lazy-zod").ZodDefault; authEndpoint: import("@frontmcp/lazy-zod").ZodOptional; tokenEndpoint: import("@frontmcp/lazy-zod").ZodOptional; registrationEndpoint: import("@frontmcp/lazy-zod").ZodOptional; userInfoEndpoint: import("@frontmcp/lazy-zod").ZodOptional; }, import("zod/v4/core").$strip>>; mode: import("@frontmcp/lazy-zod").ZodLiteral<"remote">; }, import("zod/v4/core").$strip>]>>; output: import("@frontmcp/lazy-zod").ZodOptional; schemaMode: import("@frontmcp/lazy-zod").ZodOptional>; schemaDescriptionFormat: import("@frontmcp/lazy-zod").ZodOptional>; }, import("zod/v4/core").$strip>>; standalone: import("@frontmcp/lazy-zod").ZodDefault, import("@frontmcp/lazy-zod").ZodBoolean]>>>; }, import("zod/v4/core").$loose>; /** * Transport options for remote MCP connections */ export interface RemoteTransportOptions { /** * Request timeout in milliseconds. * @default 30000 */ timeout?: number; /** * Number of retry attempts for failed requests. * @default 3 */ retryAttempts?: number; /** * Delay between retries in milliseconds. * @default 1000 */ retryDelayMs?: number; /** * Whether to fallback to SSE if Streamable HTTP fails. * Only applies to 'url' transport type. * @default true */ fallbackToSSE?: boolean; /** * Additional headers to include in all requests. */ headers?: Record; } /** * Static credentials for remote server authentication */ export interface RemoteStaticCredentials { type: 'bearer' | 'basic' | 'apiKey'; value: string; /** * Header name for apiKey type. * @default 'X-API-Key' */ headerName?: string; } /** * Authentication configuration for remote MCP connections. * This controls how the gateway authenticates with the remote server. */ export type RemoteAuthConfig = { /** * Use static credentials for the remote server. * Good for trusted internal services. */ mode: 'static'; credentials: RemoteStaticCredentials; } | { /** * Forward gateway user's token to remote server. * Enables remote authorization decisions based on gateway user. */ mode: 'forward'; /** * Specific claim to extract from token (default: entire token) */ tokenClaim?: string; /** * Header name to use (default: 'Authorization') */ headerName?: string; } | { /** * Let remote server handle its own OAuth flow. * No auth headers are added by the gateway. */ mode: 'oauth'; }; /** * Unified loader configuration for npm/ESM package resolution and bundle fetching. * When `url` is set but `registryUrl` is not, both registry and bundles use `url`. * When `registryUrl` is also set, registry uses `registryUrl`, bundles use `url`. */ export interface PackageLoader { /** Base URL for the loader server (registry API + bundle fetching). * Defaults: registry → https://registry.npmjs.org, bundles → https://esm.sh */ url?: string; /** Separate registry URL for version resolution (if different from bundle URL) */ registryUrl?: string; /** Bearer token for authentication */ token?: string; /** Env var name containing the bearer token */ tokenEnvVar?: string; } /** * Declarative metadata describing what a remote encapsulated mcp app. */ export interface RemoteAppMetadata { /** * Human-friendly name for this app as shown in UIs, logs, and describe reports. * Keep it short, stable, and unique within a gateway (consider prefixes). */ id?: string; /** * Human-friendly name for this app as shown in UIs, logs, and describe reports. * Keep it short, stable, and unique within a gateway (consider prefixes). */ name: string; /** * Optional longer explanation of what the app does and what it exposes. * Used for documentation, describe reports, and UIs. Avoid secrets/PII. */ description?: string; /** * The type of the remote app transport. * - 'url': Standard HTTP MCP server (Streamable HTTP with SSE fallback) * - 'worker': Local worker subprocess * - 'npm': NPM package loaded via esm.sh CDN * - 'esm': Direct ESM module URL */ urlType: 'worker' | 'url' | 'npm' | 'esm'; /** * The URL or path for the remote app. * - For 'url': HTTP(S) endpoint (e.g., 'https://api.example.com/mcp') * - For 'worker': Path to worker script (e.g., './workers/my-mcp.js') * - For 'npm': Package specifier (e.g., '@frontmcp/slack-mcp@latest') * - For 'esm': ESM module URL (e.g., 'https://esm.sh/@scope/pkg') */ url: string; /** * Namespace prefix for tools, resources, and prompts from this remote app. * Helps avoid naming conflicts when orchestrating multiple remote servers. * @default Uses app name */ namespace?: string; /** * Transport-specific options for the remote connection. */ transportOptions?: RemoteTransportOptions; /** * Authentication configuration for the remote server. * Controls how the gateway authenticates with the remote MCP server. */ remoteAuth?: RemoteAuthConfig; /** * Configures the app's default authentication provider. * If not provided, the app will use the gateway's default auth provider. */ auth?: AuthOptionsInput; /** * Interval in milliseconds to refresh capabilities from the remote server. * Set to 0 to disable automatic refresh. * @default 0 */ refreshInterval?: number; /** * TTL in milliseconds for cached capabilities from the remote server. * Capabilities are cached to avoid repeated discovery calls. * @default 60000 (60 seconds) */ cacheTTL?: number; /** * ESM/NPM-specific configuration (only used when urlType is 'npm' or 'esm'). * Configures loader endpoints, auto-update, caching, and import map overrides. */ packageConfig?: { /** * Unified loader configuration for registry API + bundle fetching. * Overrides the gateway-level `loader` when set. */ loader?: PackageLoader; /** Auto-update configuration for semver-based polling */ autoUpdate?: { /** Enable background version polling */ enabled: boolean; /** Polling interval in milliseconds (default: 300000 = 5 min) */ intervalMs?: number; }; /** Local cache TTL in milliseconds (default: 86400000 = 24 hours) */ cacheTTL?: number; /** Import map overrides for ESM resolution */ importMap?: Record; }; /** * Include/exclude filter for selectively importing primitives from this app. * Supports per-type filtering (tools, resources, prompts, etc.) with glob patterns. * * @example * ```ts * { default: 'include', exclude: { tools: ['dangerous-*'] } } * { default: 'exclude', include: { tools: ['echo', 'add'] } } * ``` */ filter?: AppFilterConfig; /** * If true, the app will NOT be included and will act as a separated scope. * If false, the app will be included in MultiApp frontmcp server. * If 'includeInParent', the app will be included in the gateway's * standalone app list and will act as a separated scope under the appName prefix */ standalone: 'includeInParent' | boolean; } export declare const packageLoaderSchema: import("@frontmcp/lazy-zod").ZodObject<{ url: import("@frontmcp/lazy-zod").ZodOptional; registryUrl: import("@frontmcp/lazy-zod").ZodOptional; token: import("@frontmcp/lazy-zod").ZodOptional; tokenEnvVar: import("@frontmcp/lazy-zod").ZodOptional; }, import("zod/v4/core").$strip>; export declare const frontMcpRemoteAppMetadataSchema: import("@frontmcp/lazy-zod").ZodObject<{ id: import("@frontmcp/lazy-zod").ZodOptional; name: import("@frontmcp/lazy-zod").ZodString; description: import("@frontmcp/lazy-zod").ZodOptional; urlType: import("@frontmcp/lazy-zod").ZodEnum<{ url: "url"; worker: "worker"; npm: "npm"; esm: "esm"; }>; url: import("@frontmcp/lazy-zod").ZodString; namespace: import("@frontmcp/lazy-zod").ZodOptional; transportOptions: import("@frontmcp/lazy-zod").ZodOptional; retryAttempts: import("@frontmcp/lazy-zod").ZodOptional; retryDelayMs: import("@frontmcp/lazy-zod").ZodOptional; fallbackToSSE: import("@frontmcp/lazy-zod").ZodOptional; headers: import("@frontmcp/lazy-zod").ZodOptional>; }, import("zod/v4/core").$strip>>; remoteAuth: import("@frontmcp/lazy-zod").ZodOptional; credentials: import("@frontmcp/lazy-zod").ZodObject<{ type: import("@frontmcp/lazy-zod").ZodEnum<{ bearer: "bearer"; basic: "basic"; apiKey: "apiKey"; }>; value: import("@frontmcp/lazy-zod").ZodString; headerName: import("@frontmcp/lazy-zod").ZodOptional; }, import("zod/v4/core").$strip>; }, import("zod/v4/core").$strip>, import("@frontmcp/lazy-zod").ZodObject<{ mode: import("@frontmcp/lazy-zod").ZodLiteral<"forward">; tokenClaim: import("@frontmcp/lazy-zod").ZodOptional; headerName: import("@frontmcp/lazy-zod").ZodOptional; }, import("zod/v4/core").$strip>, import("@frontmcp/lazy-zod").ZodObject<{ mode: import("@frontmcp/lazy-zod").ZodLiteral<"oauth">; }, import("zod/v4/core").$strip>], "mode">>; auth: import("@frontmcp/lazy-zod").ZodOptional; issuer: import("@frontmcp/lazy-zod").ZodOptional; sessionTtl: import("@frontmcp/lazy-zod").ZodDefault; anonymousScopes: import("@frontmcp/lazy-zod").ZodDefault>; publicAccess: import("@frontmcp/lazy-zod").ZodOptional, import("@frontmcp/lazy-zod").ZodArray]>>; prompts: import("@frontmcp/lazy-zod").ZodDefault, import("@frontmcp/lazy-zod").ZodArray]>>; rateLimit: import("@frontmcp/lazy-zod").ZodDefault; }, import("zod/v4/core").$strip>>; jwks: import("@frontmcp/lazy-zod").ZodOptional>; }, import("zod/v4/core").$strip>>; signKey: import("@frontmcp/lazy-zod").ZodOptional, import("zod").ZodCustom, Uint8Array>]>>; }, import("zod/v4/core").$strip>, import("@frontmcp/lazy-zod").ZodObject<{ expectedAudience: import("@frontmcp/lazy-zod").ZodOptional]>>; requireAudience: import("@frontmcp/lazy-zod").ZodOptional; requiredScopes: import("@frontmcp/lazy-zod").ZodDefault>; allowAnonymous: import("@frontmcp/lazy-zod").ZodDefault; anonymousScopes: import("@frontmcp/lazy-zod").ZodDefault>; publicAccess: import("@frontmcp/lazy-zod").ZodOptional, import("@frontmcp/lazy-zod").ZodArray]>>; prompts: import("@frontmcp/lazy-zod").ZodDefault, import("@frontmcp/lazy-zod").ZodArray]>>; rateLimit: import("@frontmcp/lazy-zod").ZodDefault; }, import("zod/v4/core").$strip>>; provider: import("@frontmcp/lazy-zod").ZodString; clientId: import("@frontmcp/lazy-zod").ZodOptional; clientSecret: import("@frontmcp/lazy-zod").ZodOptional; scopes: import("@frontmcp/lazy-zod").ZodOptional>; providerConfig: import("@frontmcp/lazy-zod").ZodOptional; id: import("@frontmcp/lazy-zod").ZodOptional; jwks: import("@frontmcp/lazy-zod").ZodOptional>; }, import("zod/v4/core").$strip>>; jwksUri: import("@frontmcp/lazy-zod").ZodOptional; additionalIssuers: import("@frontmcp/lazy-zod").ZodOptional>; verifyIssuer: import("@frontmcp/lazy-zod").ZodOptional; dcrEnabled: import("@frontmcp/lazy-zod").ZodDefault; authEndpoint: import("@frontmcp/lazy-zod").ZodOptional; tokenEndpoint: import("@frontmcp/lazy-zod").ZodOptional; registrationEndpoint: import("@frontmcp/lazy-zod").ZodOptional; userInfoEndpoint: import("@frontmcp/lazy-zod").ZodOptional; }, import("zod/v4/core").$strip>>; mode: import("@frontmcp/lazy-zod").ZodLiteral<"transparent">; }, import("zod/v4/core").$strip>, import("@frontmcp/lazy-zod").ZodObject<{ requireEmail: import("@frontmcp/lazy-zod").ZodDefault; anonymousSubject: import("@frontmcp/lazy-zod").ZodDefault; login: import("@frontmcp/lazy-zod").ZodOptional; subtitle: import("@frontmcp/lazy-zod").ZodOptional; logoUri: import("@frontmcp/lazy-zod").ZodOptional; fields: import("@frontmcp/lazy-zod").ZodOptional; label: import("@frontmcp/lazy-zod").ZodOptional; required: import("@frontmcp/lazy-zod").ZodOptional; placeholder: import("@frontmcp/lazy-zod").ZodOptional; options: import("@frontmcp/lazy-zod").ZodOptional>>; }, import("zod/v4/core").$strip>>>; render: import("@frontmcp/lazy-zod").ZodOptional string, (ctx: import("libs/auth/dist/options/interfaces").LoginRenderContext) => string>>; subject: import("@frontmcp/lazy-zod").ZodOptional; strategy: import("@frontmcp/lazy-zod").ZodOptional>; }, import("zod/v4/core").$strip>>; }, import("zod/v4/core").$strip>>; authenticate: import("@frontmcp/lazy-zod").ZodOptional>; providers: import("@frontmcp/lazy-zod").ZodOptional; authorizationEndpoint: import("@frontmcp/lazy-zod").ZodOptional; authorizeUrl: import("@frontmcp/lazy-zod").ZodOptional; tokenEndpoint: import("@frontmcp/lazy-zod").ZodOptional; tokenUrl: import("@frontmcp/lazy-zod").ZodOptional; clientId: import("@frontmcp/lazy-zod").ZodString; clientSecret: import("@frontmcp/lazy-zod").ZodOptional; scopes: import("@frontmcp/lazy-zod").ZodOptional>; userInfoEndpoint: import("@frontmcp/lazy-zod").ZodOptional; jwksUri: import("@frontmcp/lazy-zod").ZodOptional; }, import("zod/v4/core").$strip>>>; dcr: import("@frontmcp/lazy-zod").ZodOptional; allowedRedirectUris: import("@frontmcp/lazy-zod").ZodOptional>; allowedClientIds: import("@frontmcp/lazy-zod").ZodOptional>; initialAccessToken: import("@frontmcp/lazy-zod").ZodOptional; clients: import("@frontmcp/lazy-zod").ZodOptional; redirectUris: import("@frontmcp/lazy-zod").ZodArray; clientName: import("@frontmcp/lazy-zod").ZodOptional; tokenEndpointAuthMethod: import("@frontmcp/lazy-zod").ZodDefault>; grantTypes: import("@frontmcp/lazy-zod").ZodDefault>>; responseTypes: import("@frontmcp/lazy-zod").ZodDefault>>; scope: import("@frontmcp/lazy-zod").ZodOptional; }, import("zod/v4/core").$strip>>>; maxDynamicClients: import("@frontmcp/lazy-zod").ZodOptional; }, import("zod/v4/core").$strip>>; local: import("@frontmcp/lazy-zod").ZodOptional, import("zod").ZodCustom, Uint8Array>]>>; jwks: import("@frontmcp/lazy-zod").ZodOptional>; }, import("zod/v4/core").$strip>>; issuer: import("@frontmcp/lazy-zod").ZodOptional; }, import("zod/v4/core").$strip>>; tokenStorage: import("@frontmcp/lazy-zod").ZodDefault, import("@frontmcp/lazy-zod").ZodObject<{ redis: import("@frontmcp/lazy-zod").ZodObject<{ host: import("@frontmcp/lazy-zod").ZodString; port: import("@frontmcp/lazy-zod").ZodDefault>; password: import("@frontmcp/lazy-zod").ZodOptional; db: import("@frontmcp/lazy-zod").ZodDefault>; tls: import("@frontmcp/lazy-zod").ZodDefault>; keyPrefix: import("@frontmcp/lazy-zod").ZodDefault>; defaultTtlMs: import("@frontmcp/lazy-zod").ZodDefault>; }, import("zod/v4/core").$strip>; }, import("zod/v4/core").$strip>, import("@frontmcp/lazy-zod").ZodObject<{ sqlite: import("@frontmcp/lazy-zod").ZodObject<{ path: import("@frontmcp/lazy-zod").ZodString; encryption: import("@frontmcp/lazy-zod").ZodOptional>; ttlCleanupIntervalMs: import("@frontmcp/lazy-zod").ZodOptional; walMode: import("@frontmcp/lazy-zod").ZodOptional; }, import("zod/v4/core").$strip>; }, import("zod/v4/core").$strip>]>>; secureStore: import("@frontmcp/lazy-zod").ZodOptional, import("@frontmcp/lazy-zod").ZodObject<{ scope: import("@frontmcp/lazy-zod").ZodOptional>; ttlMs: import("@frontmcp/lazy-zod").ZodOptional; encryption: import("@frontmcp/lazy-zod").ZodOptional; }, import("zod/v4/core").$strip>>; sqlite: import("@frontmcp/lazy-zod").ZodObject<{ path: import("@frontmcp/lazy-zod").ZodString; encryption: import("@frontmcp/lazy-zod").ZodOptional>; ttlCleanupIntervalMs: import("@frontmcp/lazy-zod").ZodOptional; walMode: import("@frontmcp/lazy-zod").ZodOptional; }, import("zod/v4/core").$strip>; }, import("zod/v4/core").$strip>, import("@frontmcp/lazy-zod").ZodObject<{ scope: import("@frontmcp/lazy-zod").ZodOptional>; ttlMs: import("@frontmcp/lazy-zod").ZodOptional; encryption: import("@frontmcp/lazy-zod").ZodOptional; }, import("zod/v4/core").$strip>>; redis: import("@frontmcp/lazy-zod").ZodObject<{ host: import("@frontmcp/lazy-zod").ZodString; port: import("@frontmcp/lazy-zod").ZodDefault>; password: import("@frontmcp/lazy-zod").ZodOptional; db: import("@frontmcp/lazy-zod").ZodDefault>; tls: import("@frontmcp/lazy-zod").ZodDefault>; keyPrefix: import("@frontmcp/lazy-zod").ZodDefault>; defaultTtlMs: import("@frontmcp/lazy-zod").ZodDefault>; }, import("zod/v4/core").$strip>; }, import("zod/v4/core").$strip>, import("@frontmcp/lazy-zod").ZodObject<{ scope: import("@frontmcp/lazy-zod").ZodOptional>; ttlMs: import("@frontmcp/lazy-zod").ZodOptional; encryption: import("@frontmcp/lazy-zod").ZodOptional; }, import("zod/v4/core").$strip>>; backend: import("zod").ZodCustom; }, import("zod/v4/core").$strip>, import("@frontmcp/lazy-zod").ZodObject<{ scope: import("@frontmcp/lazy-zod").ZodOptional>; ttlMs: import("@frontmcp/lazy-zod").ZodOptional; encryption: import("@frontmcp/lazy-zod").ZodOptional; }, import("zod/v4/core").$strip>>; }, import("zod/v4/core").$strip>]>>; allowDefaultPublic: import("@frontmcp/lazy-zod").ZodDefault; anonymousScopes: import("@frontmcp/lazy-zod").ZodDefault>; publicAccess: import("@frontmcp/lazy-zod").ZodOptional, import("@frontmcp/lazy-zod").ZodArray]>>; prompts: import("@frontmcp/lazy-zod").ZodDefault, import("@frontmcp/lazy-zod").ZodArray]>>; rateLimit: import("@frontmcp/lazy-zod").ZodDefault; }, import("zod/v4/core").$strip>>; consent: import("@frontmcp/lazy-zod").ZodOptional; groupByApp: import("@frontmcp/lazy-zod").ZodDefault; showDescriptions: import("@frontmcp/lazy-zod").ZodDefault; allowSelectAll: import("@frontmcp/lazy-zod").ZodDefault; requireSelection: import("@frontmcp/lazy-zod").ZodDefault; customMessage: import("@frontmcp/lazy-zod").ZodOptional; rememberConsent: import("@frontmcp/lazy-zod").ZodDefault; excludedTools: import("@frontmcp/lazy-zod").ZodOptional>; defaultSelectedTools: import("@frontmcp/lazy-zod").ZodOptional>; }, import("zod/v4/core").$strip>>; federatedAuth: import("@frontmcp/lazy-zod").ZodOptional>; minProviders: import("@frontmcp/lazy-zod").ZodOptional; requiredProviders: import("@frontmcp/lazy-zod").ZodOptional>; }, import("zod/v4/core").$strip>>; refresh: import("@frontmcp/lazy-zod").ZodOptional; skewSeconds: import("@frontmcp/lazy-zod").ZodDefault; }, import("zod/v4/core").$strip>>; expectedAudience: import("@frontmcp/lazy-zod").ZodOptional]>>; incrementalAuth: import("@frontmcp/lazy-zod").ZodOptional; skippedAppBehavior: import("@frontmcp/lazy-zod").ZodDefault>; allowSkip: import("@frontmcp/lazy-zod").ZodDefault; showAllAppsAtOnce: import("@frontmcp/lazy-zod").ZodDefault; }, import("zod/v4/core").$strip>>; requireRegisteredClients: import("@frontmcp/lazy-zod").ZodDefault; cimd: import("@frontmcp/lazy-zod").ZodOptional; cache: import("@frontmcp/lazy-zod").ZodOptional>; defaultTtlMs: import("@frontmcp/lazy-zod").ZodDefault; maxTtlMs: import("@frontmcp/lazy-zod").ZodDefault; minTtlMs: import("@frontmcp/lazy-zod").ZodDefault; redis: import("@frontmcp/lazy-zod").ZodOptional; host: import("@frontmcp/lazy-zod").ZodOptional; port: import("@frontmcp/lazy-zod").ZodOptional; password: import("@frontmcp/lazy-zod").ZodOptional; db: import("@frontmcp/lazy-zod").ZodOptional; tls: import("@frontmcp/lazy-zod").ZodOptional; keyPrefix: import("@frontmcp/lazy-zod").ZodDefault; }, import("zod/v4/core").$strip>>; }, import("zod/v4/core").$strip>>; security: import("@frontmcp/lazy-zod").ZodOptional; allowedDomains: import("@frontmcp/lazy-zod").ZodOptional>; blockedDomains: import("@frontmcp/lazy-zod").ZodOptional>; warnOnLocalhostRedirects: import("@frontmcp/lazy-zod").ZodDefault; allowInsecureForTesting: import("@frontmcp/lazy-zod").ZodDefault; }, import("zod/v4/core").$strip>>; network: import("@frontmcp/lazy-zod").ZodOptional; maxResponseSizeBytes: import("@frontmcp/lazy-zod").ZodDefault; redirectPolicy: import("@frontmcp/lazy-zod").ZodDefault>; maxRedirects: import("@frontmcp/lazy-zod").ZodDefault; }, import("zod/v4/core").$strip>>; }, import("zod/v4/core").$strip>>; ui: import("@frontmcp/lazy-zod").ZodOptional & import("zod/v4/core").$partial, import("@frontmcp/lazy-zod").ZodString>>; extras: import("@frontmcp/lazy-zod").ZodOptional>>; mode: import("@frontmcp/lazy-zod").ZodLiteral<"local">; }, import("zod/v4/core").$strip>, import("@frontmcp/lazy-zod").ZodObject<{ local: import("@frontmcp/lazy-zod").ZodOptional, import("zod").ZodCustom, Uint8Array>]>>; jwks: import("@frontmcp/lazy-zod").ZodOptional>; }, import("zod/v4/core").$strip>>; issuer: import("@frontmcp/lazy-zod").ZodOptional; }, import("zod/v4/core").$strip>>; tokenStorage: import("@frontmcp/lazy-zod").ZodDefault, import("@frontmcp/lazy-zod").ZodObject<{ redis: import("@frontmcp/lazy-zod").ZodObject<{ host: import("@frontmcp/lazy-zod").ZodString; port: import("@frontmcp/lazy-zod").ZodDefault>; password: import("@frontmcp/lazy-zod").ZodOptional; db: import("@frontmcp/lazy-zod").ZodDefault>; tls: import("@frontmcp/lazy-zod").ZodDefault>; keyPrefix: import("@frontmcp/lazy-zod").ZodDefault>; defaultTtlMs: import("@frontmcp/lazy-zod").ZodDefault>; }, import("zod/v4/core").$strip>; }, import("zod/v4/core").$strip>, import("@frontmcp/lazy-zod").ZodObject<{ sqlite: import("@frontmcp/lazy-zod").ZodObject<{ path: import("@frontmcp/lazy-zod").ZodString; encryption: import("@frontmcp/lazy-zod").ZodOptional>; ttlCleanupIntervalMs: import("@frontmcp/lazy-zod").ZodOptional; walMode: import("@frontmcp/lazy-zod").ZodOptional; }, import("zod/v4/core").$strip>; }, import("zod/v4/core").$strip>]>>; secureStore: import("@frontmcp/lazy-zod").ZodOptional, import("@frontmcp/lazy-zod").ZodObject<{ scope: import("@frontmcp/lazy-zod").ZodOptional>; ttlMs: import("@frontmcp/lazy-zod").ZodOptional; encryption: import("@frontmcp/lazy-zod").ZodOptional; }, import("zod/v4/core").$strip>>; sqlite: import("@frontmcp/lazy-zod").ZodObject<{ path: import("@frontmcp/lazy-zod").ZodString; encryption: import("@frontmcp/lazy-zod").ZodOptional>; ttlCleanupIntervalMs: import("@frontmcp/lazy-zod").ZodOptional; walMode: import("@frontmcp/lazy-zod").ZodOptional; }, import("zod/v4/core").$strip>; }, import("zod/v4/core").$strip>, import("@frontmcp/lazy-zod").ZodObject<{ scope: import("@frontmcp/lazy-zod").ZodOptional>; ttlMs: import("@frontmcp/lazy-zod").ZodOptional; encryption: import("@frontmcp/lazy-zod").ZodOptional; }, import("zod/v4/core").$strip>>; redis: import("@frontmcp/lazy-zod").ZodObject<{ host: import("@frontmcp/lazy-zod").ZodString; port: import("@frontmcp/lazy-zod").ZodDefault>; password: import("@frontmcp/lazy-zod").ZodOptional; db: import("@frontmcp/lazy-zod").ZodDefault>; tls: import("@frontmcp/lazy-zod").ZodDefault>; keyPrefix: import("@frontmcp/lazy-zod").ZodDefault>; defaultTtlMs: import("@frontmcp/lazy-zod").ZodDefault>; }, import("zod/v4/core").$strip>; }, import("zod/v4/core").$strip>, import("@frontmcp/lazy-zod").ZodObject<{ scope: import("@frontmcp/lazy-zod").ZodOptional>; ttlMs: import("@frontmcp/lazy-zod").ZodOptional; encryption: import("@frontmcp/lazy-zod").ZodOptional; }, import("zod/v4/core").$strip>>; backend: import("zod").ZodCustom; }, import("zod/v4/core").$strip>, import("@frontmcp/lazy-zod").ZodObject<{ scope: import("@frontmcp/lazy-zod").ZodOptional>; ttlMs: import("@frontmcp/lazy-zod").ZodOptional; encryption: import("@frontmcp/lazy-zod").ZodOptional; }, import("zod/v4/core").$strip>>; }, import("zod/v4/core").$strip>]>>; allowDefaultPublic: import("@frontmcp/lazy-zod").ZodDefault; anonymousScopes: import("@frontmcp/lazy-zod").ZodDefault>; publicAccess: import("@frontmcp/lazy-zod").ZodOptional, import("@frontmcp/lazy-zod").ZodArray]>>; prompts: import("@frontmcp/lazy-zod").ZodDefault, import("@frontmcp/lazy-zod").ZodArray]>>; rateLimit: import("@frontmcp/lazy-zod").ZodDefault; }, import("zod/v4/core").$strip>>; consent: import("@frontmcp/lazy-zod").ZodOptional; groupByApp: import("@frontmcp/lazy-zod").ZodDefault; showDescriptions: import("@frontmcp/lazy-zod").ZodDefault; allowSelectAll: import("@frontmcp/lazy-zod").ZodDefault; requireSelection: import("@frontmcp/lazy-zod").ZodDefault; customMessage: import("@frontmcp/lazy-zod").ZodOptional; rememberConsent: import("@frontmcp/lazy-zod").ZodDefault; excludedTools: import("@frontmcp/lazy-zod").ZodOptional>; defaultSelectedTools: import("@frontmcp/lazy-zod").ZodOptional>; }, import("zod/v4/core").$strip>>; federatedAuth: import("@frontmcp/lazy-zod").ZodOptional>; minProviders: import("@frontmcp/lazy-zod").ZodOptional; requiredProviders: import("@frontmcp/lazy-zod").ZodOptional>; }, import("zod/v4/core").$strip>>; refresh: import("@frontmcp/lazy-zod").ZodOptional; skewSeconds: import("@frontmcp/lazy-zod").ZodDefault; }, import("zod/v4/core").$strip>>; expectedAudience: import("@frontmcp/lazy-zod").ZodOptional]>>; incrementalAuth: import("@frontmcp/lazy-zod").ZodOptional; skippedAppBehavior: import("@frontmcp/lazy-zod").ZodDefault>; allowSkip: import("@frontmcp/lazy-zod").ZodDefault; showAllAppsAtOnce: import("@frontmcp/lazy-zod").ZodDefault; }, import("zod/v4/core").$strip>>; requireRegisteredClients: import("@frontmcp/lazy-zod").ZodDefault; cimd: import("@frontmcp/lazy-zod").ZodOptional; cache: import("@frontmcp/lazy-zod").ZodOptional>; defaultTtlMs: import("@frontmcp/lazy-zod").ZodDefault; maxTtlMs: import("@frontmcp/lazy-zod").ZodDefault; minTtlMs: import("@frontmcp/lazy-zod").ZodDefault; redis: import("@frontmcp/lazy-zod").ZodOptional; host: import("@frontmcp/lazy-zod").ZodOptional; port: import("@frontmcp/lazy-zod").ZodOptional; password: import("@frontmcp/lazy-zod").ZodOptional; db: import("@frontmcp/lazy-zod").ZodOptional; tls: import("@frontmcp/lazy-zod").ZodOptional; keyPrefix: import("@frontmcp/lazy-zod").ZodDefault; }, import("zod/v4/core").$strip>>; }, import("zod/v4/core").$strip>>; security: import("@frontmcp/lazy-zod").ZodOptional; allowedDomains: import("@frontmcp/lazy-zod").ZodOptional>; blockedDomains: import("@frontmcp/lazy-zod").ZodOptional>; warnOnLocalhostRedirects: import("@frontmcp/lazy-zod").ZodDefault; allowInsecureForTesting: import("@frontmcp/lazy-zod").ZodDefault; }, import("zod/v4/core").$strip>>; network: import("@frontmcp/lazy-zod").ZodOptional; maxResponseSizeBytes: import("@frontmcp/lazy-zod").ZodDefault; redirectPolicy: import("@frontmcp/lazy-zod").ZodDefault>; maxRedirects: import("@frontmcp/lazy-zod").ZodDefault; }, import("zod/v4/core").$strip>>; }, import("zod/v4/core").$strip>>; ui: import("@frontmcp/lazy-zod").ZodOptional & import("zod/v4/core").$partial, import("@frontmcp/lazy-zod").ZodString>>; extras: import("@frontmcp/lazy-zod").ZodOptional>>; provider: import("@frontmcp/lazy-zod").ZodString; clientId: import("@frontmcp/lazy-zod").ZodOptional; clientSecret: import("@frontmcp/lazy-zod").ZodOptional; scopes: import("@frontmcp/lazy-zod").ZodOptional>; providerConfig: import("@frontmcp/lazy-zod").ZodOptional; id: import("@frontmcp/lazy-zod").ZodOptional; jwks: import("@frontmcp/lazy-zod").ZodOptional>; }, import("zod/v4/core").$strip>>; jwksUri: import("@frontmcp/lazy-zod").ZodOptional; additionalIssuers: import("@frontmcp/lazy-zod").ZodOptional>; verifyIssuer: import("@frontmcp/lazy-zod").ZodOptional; dcrEnabled: import("@frontmcp/lazy-zod").ZodDefault; authEndpoint: import("@frontmcp/lazy-zod").ZodOptional; tokenEndpoint: import("@frontmcp/lazy-zod").ZodOptional; registrationEndpoint: import("@frontmcp/lazy-zod").ZodOptional; userInfoEndpoint: import("@frontmcp/lazy-zod").ZodOptional; }, import("zod/v4/core").$strip>>; mode: import("@frontmcp/lazy-zod").ZodLiteral<"remote">; }, import("zod/v4/core").$strip>]>>; refreshInterval: import("@frontmcp/lazy-zod").ZodOptional; cacheTTL: import("@frontmcp/lazy-zod").ZodOptional; packageConfig: import("@frontmcp/lazy-zod").ZodOptional; registryUrl: import("@frontmcp/lazy-zod").ZodOptional; token: import("@frontmcp/lazy-zod").ZodOptional; tokenEnvVar: import("@frontmcp/lazy-zod").ZodOptional; }, import("zod/v4/core").$strip>>; autoUpdate: import("@frontmcp/lazy-zod").ZodOptional; }, import("zod/v4/core").$strip>>; cacheTTL: import("@frontmcp/lazy-zod").ZodOptional; importMap: import("@frontmcp/lazy-zod").ZodOptional>; }, import("zod/v4/core").$strip>>; filter: import("@frontmcp/lazy-zod").ZodOptional>; include: import("@frontmcp/lazy-zod").ZodOptional>; resources: import("@frontmcp/lazy-zod").ZodOptional>; prompts: import("@frontmcp/lazy-zod").ZodOptional>; agents: import("@frontmcp/lazy-zod").ZodOptional>; skills: import("@frontmcp/lazy-zod").ZodOptional>; jobs: import("@frontmcp/lazy-zod").ZodOptional>; workflows: import("@frontmcp/lazy-zod").ZodOptional>; }, import("zod/v4/core").$strip>>; exclude: import("@frontmcp/lazy-zod").ZodOptional>; resources: import("@frontmcp/lazy-zod").ZodOptional>; prompts: import("@frontmcp/lazy-zod").ZodOptional>; agents: import("@frontmcp/lazy-zod").ZodOptional>; skills: import("@frontmcp/lazy-zod").ZodOptional>; jobs: import("@frontmcp/lazy-zod").ZodOptional>; workflows: import("@frontmcp/lazy-zod").ZodOptional>; }, import("zod/v4/core").$strip>>; }, import("zod/v4/core").$strip>>; standalone: import("@frontmcp/lazy-zod").ZodDefault, import("@frontmcp/lazy-zod").ZodBoolean]>>>; }, import("zod/v4/core").$loose>; export type AppMetadata = LocalAppMetadata | RemoteAppMetadata; /** * Options for `App.esm()` — loads an @App-decorated class from an npm package. * Extends {@link EsmOptions} with app-specific fields. */ export interface EsmAppOptions extends EsmOptions { /** Override the auto-derived app name */ name?: string; /** Namespace prefix for tools, resources, and prompts */ namespace?: string; /** Human-readable description */ description?: string; /** Standalone mode */ standalone?: boolean | 'includeInParent'; /** Auto-update configuration for semver-based polling */ autoUpdate?: { enabled: boolean; intervalMs?: number; }; /** Import map overrides for ESM resolution */ importMap?: Record; /** Include/exclude filter for selectively importing primitives */ filter?: AppFilterConfig; } /** * Options for `App.remote()` — connects to an external MCP server via HTTP. * Extends {@link RemoteOptions} with app-specific fields. */ export interface RemoteUrlAppOptions extends RemoteOptions { /** Override the auto-derived app name */ name?: string; /** Namespace prefix for tools, resources, and prompts */ namespace?: string; /** Human-readable description */ description?: string; /** Standalone mode */ standalone?: boolean | 'includeInParent'; /** Interval (ms) to refresh capabilities from the remote server */ refreshInterval?: number; /** TTL (ms) for cached capabilities */ cacheTTL?: number; /** Include/exclude filter for selectively importing primitives */ filter?: AppFilterConfig; } //# sourceMappingURL=app.metadata.d.ts.map