import { ResourceDefinition, ResourceTemplateDefinition, ResourceAnnotations, ExecutionContext, ResourceContent, JsonValue } from './types.js'; /** * MCP Resource metadata structure (for protocol) */ interface McpResource { uri: string; name: string; title?: string; description: string; mimeType?: string; size?: number; annotations?: ResourceAnnotations; _meta?: Record; } /** * MCP Resource Template metadata structure (for protocol) */ interface McpResourceTemplate { uriTemplate: string; name: string; title?: string; description?: string; mimeType?: string; annotations?: ResourceAnnotations; } /** * Resource class provides a clean abstraction for defining and serving resources */ export declare class Resource { private definition; private caches; private subscribers; /** Widget template metadata; merged into resources/read contents[]._meta (e.g. MCP Apps ui.csp). */ private widgetReadMeta?; constructor(definition: ResourceDefinition); /** * Attach metadata from a UI component (OpenAI / MCP Apps) for ReadResource responses. */ attachWidgetReadMeta(meta: Record): void; getWidgetReadMeta(): Record | undefined; /** * Get resource URI */ get uri(): string; /** * Get resource name */ get name(): string; /** * Get resource title (display name) */ get title(): string | undefined; /** * Get resource description */ get description(): string; /** * Get resource MIME type */ get mimeType(): string | undefined; /** * Get resource size in bytes */ get size(): number | undefined; /** * Get resource annotations */ get annotations(): ResourceAnnotations | undefined; /** * Caching metadata (`cacheable` / `cacheMaxAge`). Used to derive the * SEP-2549 cache hint on the 2026-07-28 path. */ get metadata(): { cacheable?: boolean; cacheMaxAge?: number; } | undefined; /** * Explicit SEP-2549 cache hint (2026-07-28 path only). */ get cacheHint(): { ttlMs?: number; cacheScope?: 'public' | 'private'; } | undefined; /** * Add a subscriber to this resource */ subscribe(subscriberId: string): void; /** * Remove a subscriber from this resource */ unsubscribe(subscriberId: string): void; /** * Get all subscriber IDs */ getSubscribers(): string[]; /** * Check if there are any subscribers */ hasSubscribers(): boolean; /** * Fetch the resource content * @param context - Execution context * @param uri - Optional specific URI to fetch (defaults to resource.uri) */ fetch(context: ExecutionContext, uri?: string): Promise; /** * Clear cached content for all URIs or a specific one */ clearCache(uri?: string): void; /** * MCP Resource metadata structure (full spec compliance) */ toMcpResource(): McpResource; } /** * Resource Template class for parameterized resources (RFC 6570) */ export declare class ResourceTemplate { private definition; constructor(definition: ResourceTemplateDefinition); get uriTemplate(): string; get name(): string; get title(): string | undefined; get description(): string | undefined; get mimeType(): string | undefined; get annotations(): ResourceAnnotations | undefined; /** * Convert to MCP protocol format */ toMcpResourceTemplate(): McpResourceTemplate; } /** * Helper function to create a resource */ export declare function createResource(definition: ResourceDefinition): Resource; /** * Helper function to create a resource template */ export declare function createResourceTemplate(definition: ResourceTemplateDefinition): ResourceTemplate; export {}; //# sourceMappingURL=resource.d.ts.map