/**
 * @fileoverview PubMed fetch tool. Fetches full article metadata by PubMed IDs,
 * including abstracts, authors, journal info, and MeSH terms.
 * @module src/mcp-server/tools/definitions/fetch-articles.tool
 */
import { z } from '@cyanheads/mcp-ts-core';
import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
export declare const fetchArticlesTool: import("@cyanheads/mcp-ts-core").ToolDefinition<z.ZodObject<{
    pmids: z.ZodArray<z.ZodString>;
    includeMesh: z.ZodDefault<z.ZodBoolean>;
    includeGrants: z.ZodDefault<z.ZodBoolean>;
}, z.core.$strip>, z.ZodObject<{
    articles: z.ZodArray<z.ZodObject<{
        pmid: z.ZodOptional<z.ZodString>;
        title: z.ZodOptional<z.ZodString>;
        abstractText: z.ZodOptional<z.ZodString>;
        affiliations: z.ZodOptional<z.ZodArray<z.ZodString>>;
        authors: z.ZodOptional<z.ZodArray<z.ZodObject<{
            lastName: z.ZodOptional<z.ZodString>;
            firstName: z.ZodOptional<z.ZodString>;
            initials: z.ZodOptional<z.ZodString>;
            collectiveName: z.ZodOptional<z.ZodString>;
            affiliationIndices: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
            orcid: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>>>;
        journalInfo: z.ZodOptional<z.ZodObject<{
            title: z.ZodOptional<z.ZodString>;
            isoAbbreviation: z.ZodOptional<z.ZodString>;
            issn: z.ZodOptional<z.ZodString>;
            eIssn: z.ZodOptional<z.ZodString>;
            volume: z.ZodOptional<z.ZodString>;
            issue: z.ZodOptional<z.ZodString>;
            pages: z.ZodOptional<z.ZodString>;
            publicationDate: z.ZodOptional<z.ZodObject<{
                year: z.ZodOptional<z.ZodString>;
                month: z.ZodOptional<z.ZodString>;
                day: z.ZodOptional<z.ZodString>;
                medlineDate: z.ZodOptional<z.ZodString>;
            }, z.core.$strip>>;
        }, z.core.$strip>>;
        doi: z.ZodOptional<z.ZodString>;
        pmcId: z.ZodOptional<z.ZodString>;
        pubmedUrl: z.ZodOptional<z.ZodString>;
        pmcUrl: z.ZodOptional<z.ZodString>;
        publicationTypes: z.ZodOptional<z.ZodArray<z.ZodString>>;
        keywords: z.ZodOptional<z.ZodArray<z.ZodString>>;
        meshTerms: z.ZodOptional<z.ZodArray<z.ZodObject<{
            descriptorName: z.ZodOptional<z.ZodString>;
            descriptorUi: z.ZodOptional<z.ZodString>;
            isMajorTopic: z.ZodBoolean;
            qualifiers: z.ZodOptional<z.ZodArray<z.ZodObject<{
                qualifierName: z.ZodString;
                qualifierUi: z.ZodOptional<z.ZodString>;
                isMajorTopic: z.ZodBoolean;
            }, z.core.$strip>>>;
        }, z.core.$strip>>>;
        grantList: z.ZodOptional<z.ZodArray<z.ZodObject<{
            grantId: z.ZodOptional<z.ZodString>;
            acronym: z.ZodOptional<z.ZodString>;
            agency: z.ZodOptional<z.ZodString>;
            country: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>>>;
        articleDates: z.ZodOptional<z.ZodArray<z.ZodObject<{
            dateType: z.ZodOptional<z.ZodString>;
            year: z.ZodOptional<z.ZodString>;
            month: z.ZodOptional<z.ZodString>;
            day: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>>>;
    }, z.core.$strip>>;
    totalReturned: z.ZodNumber;
    unavailablePmids: z.ZodOptional<z.ZodArray<z.ZodString>>;
}, z.core.$strip>, readonly [{
    readonly reason: "queue_full";
    readonly code: JsonRpcErrorCode.RateLimited;
    readonly when: "Local NCBI request queue is at capacity.";
    readonly recovery: "Retry after 1-2 seconds; the request queue hit the NCBI rate limit.";
    readonly retryable: true;
}, {
    readonly reason: "ncbi_unreachable";
    readonly code: JsonRpcErrorCode.ServiceUnavailable;
    readonly when: "NCBI E-utilities is unreachable after all retry attempts.";
    readonly recovery: "Retry after a brief delay; NCBI was unreachable across all retry attempts.";
    readonly retryable: true;
}, {
    readonly reason: "ncbi_deadline_exceeded";
    readonly code: JsonRpcErrorCode.Timeout;
    readonly when: "Total request deadline expired before NCBI returned a response.";
    readonly recovery: "Reduce batch size or retry; NCBI may be under temporary load.";
    readonly retryable: true;
}, {
    readonly reason: "ncbi_invalid_response";
    readonly code: JsonRpcErrorCode.SerializationError;
    readonly when: "NCBI returned a body that could not be parsed (invalid XML/JSON).";
    readonly recovery: "Retry the request; NCBI returned a malformed response that could not be parsed.";
    readonly retryable: true;
}, {
    readonly reason: "ncbi_resource_not_found";
    readonly code: JsonRpcErrorCode.NotFound;
    readonly when: "NCBI returned a structured \"not found\" error for the requested ID(s).";
    readonly recovery: "Verify the ID exists in PubMed; the resource was not found in NCBI and retrying will not help.";
    readonly retryable: false;
}, {
    readonly reason: "invalid_efetch_response";
    readonly code: JsonRpcErrorCode.SerializationError;
    readonly when: "NCBI EFetch returned a payload missing the PubmedArticleSet wrapper.";
    readonly recovery: "Retry once; if it persists, NCBI returned malformed data — try fewer PMIDs at once.";
}]>;
//# sourceMappingURL=fetch-articles.tool.d.ts.map