import 'reflect-metadata'; import { type ReadResourceRequest, type ReadResourceResult } from '@frontmcp/protocol'; import { type ResourceContext } from '../interfaces'; import { type EsmOptions, type RemoteOptions, type ResourceMetadata, type ResourceTemplateMetadata } from '../metadata'; import { type ResourceEsmTargetRecord, type ResourceRemoteRecord } from '../records/resource.record'; /** * Decorator that marks a class as a McpResource module and provides metadata */ declare function FrontMcpResource(providedMetadata: ResourceMetadata): ClassDecorator; /** * Decorator that marks a class as a McpResourceTemplate module and provides metadata */ declare function FrontMcpResourceTemplate(providedMetadata: ResourceTemplateMetadata): ClassDecorator; export type FrontMcpResourceExecuteHandler = (uri: ReadResourceRequest['params']['uri'], ...tokens: any[]) => ReadResourceResult | Promise; export type FrontMcpResourceTemplateExecuteHandler = (uri: ReadResourceRequest['params']['uri'], params: Record, ...tokens: any[]) => ReadResourceResult | Promise; /** * Function builder that creates a function-style static resource. * Use for simple resources that don't need class-based context. * * @example * ```ts * const AppConfig = resource({ * name: 'app-config', * uri: 'config://app', * mimeType: 'application/json', * })((uri) => ({ * contents: [{ uri, text: JSON.stringify({ version: '1.0.0' }) }] * })); * ``` */ declare function frontMcpResource(providedMetadata: T): (handler: FrontMcpResourceExecuteHandler) => () => FrontMcpResourceExecuteHandler; /** * Function builder that creates a function-style resource template. * Use for simple templated resources that don't need class-based context. * * @example * ```ts * const UserProfile = resourceTemplate({ * name: 'user-profile', * uriTemplate: 'users://{userId}/profile', * mimeType: 'application/json', * })((uri, params) => ({ * contents: [{ uri, text: JSON.stringify({ id: params.userId }) }] * })); * ``` */ declare function frontMcpResourceTemplate(providedMetadata: T): (handler: FrontMcpResourceTemplateExecuteHandler) => () => FrontMcpResourceTemplateExecuteHandler; declare function resourceEsm(specifier: string, targetName: string, options?: EsmOptions): ResourceEsmTargetRecord; declare function resourceRemote(url: string, targetName: string, options?: RemoteOptions): ResourceRemoteRecord; type __Ctor = (new (...a: any[]) => any) | (abstract new (...a: any[]) => any); type __R = C extends new (...a: any[]) => infer R ? R : C extends abstract new (...a: any[]) => infer R ? R : never; type __MustExtendResourceCtx = __R extends ResourceContext ? unknown : { 'Resource class error': 'Class must extend ResourceContext'; }; type ResourceDecorator = { (metadata: ResourceMetadata): (cls: C & __MustExtendResourceCtx) => C; esm: typeof resourceEsm; remote: typeof resourceRemote; }; type ResourceTemplateDecorator = { (metadata: ResourceTemplateMetadata): (cls: C & __MustExtendResourceCtx) => C; }; declare const Resource: ResourceDecorator; declare const _ResourceTemplate: ResourceTemplateDecorator; export { FrontMcpResource, Resource, FrontMcpResourceTemplate, _ResourceTemplate as ResourceTemplate, frontMcpResource, frontMcpResource as resource, frontMcpResourceTemplate, frontMcpResourceTemplate as resourceTemplate, }; //# sourceMappingURL=resource.decorator.d.ts.map