import type { ListResourcesResult, ListResourceTemplatesResult, ReadResourceResult, TextResourceContents } from '@modelcontextprotocol/sdk/types.js';
import type { PaymentProvider } from '../payments/types.js';
import { ServerMode } from '../types.js';
import type { AvailableWidget } from './widgets.js';
type ExtendedResourceContents = TextResourceContents & {
    html?: string;
    _meta?: AvailableWidget['meta'];
};
type ExtendedReadResourceResult = Omit<ReadResourceResult, 'contents'> & {
    contents: ExtendedResourceContents[];
};
type ResourceService = {
    listResources: () => Promise<ListResourcesResult>;
    readResource: (uri: string) => Promise<ExtendedReadResourceResult>;
    listResourceTemplates: () => Promise<ListResourceTemplatesResult>;
};
type ResourceServiceOptions = {
    paymentProvider?: PaymentProvider;
    /**
     * Read the current server mode at call time. Callers must pass a getter rather
     * than a value: `serverMode` can flip from the preliminary DEFAULT to APPS when
     * the server's initialize request handler resolves the `'auto'` option against
     * client capabilities, and a captured value would freeze resource listings to
     * the preliminary mode.
     */
    getMode: () => ServerMode;
    getAvailableWidgets: () => Map<string, AvailableWidget>;
};
export declare function createResourceService(options: ResourceServiceOptions): ResourceService;
export {};
//# sourceMappingURL=resource_service.d.ts.map