export type ResourceContent = {
    uri: string;
    mimeType?: string;
    text?: string;
    blob?: string;
};
export type ResourceDefinition = {
    uri: string;
    name: string;
    description?: string;
    mimeType?: string;
};
export type ResourceTemplateDefinition = {
    uriTemplate: string;
    name: string;
    description?: string;
    mimeType?: string;
};
export interface ResourceProtocol {
    uri: string;
    name: string;
    description?: string;
    mimeType?: string;
    resourceDefinition: ResourceDefinition;
    read(): Promise<ResourceContent[]>;
    subscribe?(): Promise<void>;
    unsubscribe?(): Promise<void>;
}
export declare abstract class MCPResource implements ResourceProtocol {
    abstract uri: string;
    abstract name: string;
    description?: string;
    mimeType?: string;
    get resourceDefinition(): ResourceDefinition;
    abstract read(): Promise<ResourceContent[]>;
    subscribe?(): Promise<void>;
    unsubscribe?(): Promise<void>;
    protected fetch<T>(url: string, init?: RequestInit): Promise<T>;
}
