import type { ScienceCacheIdentity, ScienceGetRequest, ScienceSearchRequest, ScienceWork } from "../../capabilities/science.js"; import type { ProviderCapability, ProviderContext } from "../types.js"; import { type PubmedTransportDeps } from "./client.js"; import { createPubmedDiagnosticsCapability } from "./diagnostics.js"; /** Parse a PubmedArticleSet XML document into normalized works. */ export declare function parsePubmedArticleSet(xml: string): readonly ScienceWork[]; /** Local science search contract — see the module header. */ interface PubmedScienceSearchCapability { validate(request: ScienceSearchRequest): void; cacheIdentity(request: ScienceSearchRequest): ScienceCacheIdentity; invoke(request: ScienceSearchRequest, signal?: AbortSignal): Promise; } /** Local science get contract — see the module header. */ interface PubmedScienceGetCapability { validate(request: ScienceGetRequest): void; cacheIdentity(request: ScienceGetRequest): ScienceCacheIdentity; invoke(request: ScienceGetRequest, signal?: AbortSignal): Promise; } /** Local ScienceCapability surface. */ interface PubmedScienceCapability { readonly search: PubmedScienceSearchCapability; readonly get: PubmedScienceGetCapability; } /** * Dependencies the PubMed Adapter accepts. The unified `transport` * seam carries `fetch` and timer injection (house spider/arXiv/OpenAlex * pattern); credentials flow through `create({ env })`, never here. */ export interface PubmedAdapterDependencies { readonly transport?: PubmedTransportDeps; } /** Local Adapter contract — see the module header. */ interface PubmedAdapter { readonly id: "pubmed"; readonly science: PubmedScienceCapability; readonly diagnostics: ReturnType; } /** Local Descriptor contract — see the module header. */ interface PubmedDescriptor { readonly id: "pubmed"; isConfigured(env: NodeJS.ProcessEnv, capabilityId?: ProviderCapability): boolean; capabilities(): ReadonlySet; create(context: ProviderContext): PubmedAdapter; readonly credentialEnvVars: readonly string[]; } /** * Build the PubMed Provider Descriptor. Keyless-by-default with an * optional rate-limit key: `isConfigured` is true for the * no-capability form (doctor) and the science duo + diagnostics — * never `quota` or non-science capabilities. `create()` is * side-effect-free; transport and credential resolution run per * capability call. */ export declare function createPubmedDescriptor(dependencies?: PubmedAdapterDependencies): PubmedDescriptor; export {}; //# sourceMappingURL=adapter.d.ts.map