/** * PubMed API Client for Cloudflare Workers * * Handles all NCBI E-utilities interactions including search, abstract retrieval, * full-text (PMC), similar articles, citation counts via iCite, and ID conversion. */ declare const SECTION_KEYS: readonly ["abstract", "introduction", "methods", "results", "discussion", "conclusions", "references"]; export type SectionKey = (typeof SECTION_KEYS)[number]; export interface PubMedClientConfig { apiKey?: string; email?: string; toolName?: string; } export interface SearchFilters { date_range?: { start?: string; end?: string; }; publication_types?: string[]; languages?: string[]; humans_only?: boolean; has_abstract?: boolean; free_full_text?: boolean; } export interface SearchPubmedOptions { retmax?: number; retstart?: number; sort?: "relevance" | "pub_date" | "first_author"; filters?: SearchFilters; /** When true, also fetches summaries (compact mode metadata). */ withSummary?: boolean; } export interface ExtendedSearchItem { pmid: string; pmcid: string | null; title: string; pubdate: string; year: string; journal: string; authors: string[]; doi: string | null; full_text_available: boolean; } export interface SearchPubmedResult { total: number; retmax: number; retstart: number; query_translation: string; final_term: string; items: ExtendedSearchItem[]; } export interface AbstractItem { pmid: string; title: string; abstract: string; journal: string; year: string; authors: string[]; doi: string | null; mesh_terms: string[]; publication_types: string[]; } export interface CountResult { query: string; count: number; query_translation: string; warnings: string[]; } export interface FullTextSection { name: string; text: string; } export interface FullTextItem { pmcid: string; pmid: string | null; title: string; sections: FullTextSection[]; available_sections: string[]; pdf_url?: string | null; error?: string; } export interface SimilarArticlesResult { reference_pmid: string; similar_articles: SimilarArticle[]; count: number; error: string | null; } export interface SimilarArticle { pmid: string; pmcid: string | null; title: string; authors: string[]; journal: string; pubdate: string; url: string; full_text_available: boolean; } export interface CitationItem { pmid: string; citation_count: number | null; citing_pmids?: string[]; source?: "icite" | "pubmed"; error?: string; note?: string; } export type ConvertIdType = "pmid" | "pmcid" | "doi"; export interface ConvertIdsItem { input: string; pmid?: string | null; pmcid?: string | null; doi?: string | null; error?: string; } export interface ConvertIdsResult { requested: number; converted: number; failed: number; conversions: ConvertIdsItem[]; failedIds: string[]; } export declare class PubMedClient { private apiKey?; private email; private toolName; constructor(config?: PubMedClientConfig); private getCommonParams; /** Mask api_key in URLs for error messages. */ private maskUrl; private makeRequest; /** * Wrap original query in parens and AND each filter clause. * Returns the final term that will be sent to NCBI. */ buildFilteredQuery(query: string, filters?: SearchFilters): string; searchPubmed(query: string, options?: SearchPubmedOptions): Promise; countSearch(query: string): Promise; getAbstracts(pmids: string[]): Promise; private parseAbstractsXml; getFullTextBatch(pmcIds: string[], sections?: (SectionKey | "all")[]): Promise; private getFullTextSingle; /** Classify a section by sec-type attr or title text. */ private classifySection; private parseJatsArticle; private extractParagraphText; findSimilarArticles(pmid: string, retmax?: number): Promise; getCitationCounts(pmids: string[], options?: { source?: "icite" | "pubmed"; includeCitingPmids?: boolean; }): Promise; /** Use elink pubmed_pubmed_citedin to get PMIDs that cite each input. */ private getCitationsViaElink; convertIds(ids: string[], fromType?: ConvertIdType, toType?: ConvertIdType): Promise; private extractTag; private extractNestedTag; private stripTags; } export {}; //# sourceMappingURL=pubmed-client.d.ts.map