/**
 * @fileoverview Europe PMC search tool. Surfaces records PubMed-only search
 * can't reach: preprints (source `PPR`), Agricola (`AGR`), patents (`PAT`),
 * and EPMC-only OA articles. Uses EPMC's cursor-based pagination
 * (`cursorMark`) — unlike `pubmed_search_articles`'s offset-based paging,
 * because EPMC's search API doesn't support offset.
 *
 * Only registered when `EUROPEPMC_ENABLED=true` (the default). The handler
 * fails fast with a configuration error if the service is unset, since the
 * tool wouldn't be registered in that case.
 *
 * @module src/mcp-server/tools/definitions/pubmed-europepmc-search.tool
 */
import { z } from '@cyanheads/mcp-ts-core';
import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
export declare const pubmedEuropepmcSearchTool: import("@cyanheads/mcp-ts-core").ToolDefinition<z.ZodObject<{
    query: z.ZodString;
    pageSize: z.ZodDefault<z.ZodNumber>;
    cursorMark: z.ZodDefault<z.ZodString>;
    sources: z.ZodOptional<z.ZodArray<z.ZodEnum<{
        MED: "MED";
        PMC: "PMC";
        PPR: "PPR";
        PAT: "PAT";
        AGR: "AGR";
    }>>>;
    resultType: z.ZodDefault<z.ZodEnum<{
        core: "core";
        lite: "lite";
    }>>;
    sort: z.ZodOptional<z.ZodString>;
}, z.core.$strip>, z.ZodObject<{
    query: z.ZodString;
    hits: z.ZodArray<z.ZodObject<{
        source: z.ZodEnum<{
            MED: "MED";
            PMC: "PMC";
            PPR: "PPR";
            PAT: "PAT";
            AGR: "AGR";
        }>;
        epmcId: z.ZodString;
        title: z.ZodOptional<z.ZodString>;
        authors: z.ZodOptional<z.ZodString>;
        journal: z.ZodOptional<z.ZodString>;
        pubYear: z.ZodOptional<z.ZodString>;
        firstPublicationDate: z.ZodOptional<z.ZodString>;
        pmid: z.ZodOptional<z.ZodString>;
        pmcId: z.ZodOptional<z.ZodString>;
        doi: z.ZodOptional<z.ZodString>;
        isOpenAccess: z.ZodOptional<z.ZodBoolean>;
        hasFullTextXml: z.ZodOptional<z.ZodBoolean>;
        abstractSnippet: z.ZodOptional<z.ZodString>;
        citedByCount: z.ZodOptional<z.ZodNumber>;
        epmcUrl: z.ZodString;
    }, z.core.$strip>>;
    hitCount: z.ZodNumber;
    cursorMark: z.ZodString;
    nextCursorMark: z.ZodOptional<z.ZodString>;
    appliedSources: z.ZodArray<z.ZodEnum<{
        MED: "MED";
        PMC: "PMC";
        PPR: "PPR";
        PAT: "PAT";
        AGR: "AGR";
    }>>;
    searchUrl: z.ZodString;
    notice: z.ZodOptional<z.ZodString>;
}, z.core.$strip>, readonly [{
    readonly reason: "europepmc_unreachable";
    readonly code: JsonRpcErrorCode.ServiceUnavailable;
    readonly when: "Europe PMC was unreachable after all retry attempts.";
    readonly recovery: "Retry after a brief delay; Europe PMC was unreachable. NCBI PMC and Unpaywall remain available.";
    readonly retryable: true;
}, {
    readonly reason: "europepmc_invalid_response";
    readonly code: JsonRpcErrorCode.SerializationError;
    readonly when: "Europe PMC returned a body that could not be parsed (invalid JSON or XML).";
    readonly recovery: "Retry the request; Europe PMC returned a malformed response that could not be parsed.";
    readonly retryable: true;
}, {
    readonly reason: "europepmc_invalid_input";
    readonly code: JsonRpcErrorCode.ValidationError;
    readonly when: "Europe PMC rejected the request input (empty query, unknown sort field, malformed parameter).";
    readonly recovery: "Adjust the input — usually the query or sort field — before retrying; the same input will be rejected again.";
    readonly retryable: false;
}, {
    readonly reason: "europepmc_disabled";
    readonly code: JsonRpcErrorCode.ConfigurationError;
    readonly when: "Europe PMC service is disabled via EUROPEPMC_ENABLED=false.";
    readonly recovery: "Set EUROPEPMC_ENABLED=true (the default) and restart the server to use this tool.";
}]>;
//# sourceMappingURL=pubmed-europepmc-search.tool.d.ts.map