import 'reflect-metadata'; import { type EsmAppOptions, type LocalAppMetadata, type RemoteAppMetadata, type RemoteUrlAppOptions } from '../metadata'; /** * Decorator that marks a class as a McpApp module and provides metadata. * * Also provides static methods for declaring external apps: * - `App.esm()` — load an @App class from an npm package * - `App.remote()` — connect to an external MCP server * * @example * ```ts * import { FrontMcp, App } from '@frontmcp/sdk'; * * @App({ name: 'Local', tools: [EchoTool] }) * class LocalApp {} * * @FrontMcp({ * apps: [ * LocalApp, * App.esm('@acme/tools@^1.0.0', { namespace: 'acme' }), * App.remote('https://api.example.com/mcp', { namespace: 'api' }), * ], * }) * export default class Server {} * ``` */ declare function FrontMcpApp(providedMetadata: LocalAppMetadata): ClassDecorator; /** * The `App` type — callable as a decorator AND has `.esm()` / `.remote()` static methods. */ type AppDecorator = { (metadata: LocalAppMetadata): ClassDecorator; esm(specifier: string, options?: EsmAppOptions): RemoteAppMetadata; remote(url: string, options?: RemoteUrlAppOptions): RemoteAppMetadata; }; declare const App: AppDecorator; /** * Functional form of `@App` — build an app from a plain metadata object, no * decorator syntax. Synthesizes a class and applies the SAME `@App` metadata, so * the result is a genuine local app (`AppKind.LOCAL_CLASS`) usable anywhere a * decorated app class is — no parallel registry. Mirrors `tool` / `resource` / * `prompt` / `skill`, and lets a config/manifest assemble apps declaratively. * * @example * const billing = app({ name: 'billing', tools: [echoTool] }); * createEdgeMcp({ info, apps: [billing] }); */ declare function frontMcpApp(metadata: LocalAppMetadata): new () => object; export { FrontMcpApp, App, frontMcpApp, frontMcpApp as app }; //# sourceMappingURL=app.decorator.d.ts.map