/**
 * @fileoverview Unpaywall service. Resolves a DOI to an open-access location
 * and fetches the raw content (HTML or PDF) for downstream extraction. Enabled
 * only when `UNPAYWALL_EMAIL` is set — absence leaves the fallback disabled.
 *
 * Philosophy: best-effort. Upstream 404s and non-OA DOIs return a `no-oa`
 * resolution; only genuine service failures (5xx, network, timeout) throw.
 * @module src/services/unpaywall/unpaywall-service
 */
import { type UnpaywallContent, type UnpaywallLocation, type UnpaywallResolution } from './types.js';
/**
 * Resolves a DOI to an open-access copy via Unpaywall and fetches its bytes.
 * Constructed only when `UNPAYWALL_EMAIL` is present; absent config → no service.
 */
export declare class UnpaywallService {
    private readonly email;
    private readonly timeoutMs;
    constructor(email: string, timeoutMs: number);
    /**
     * Look up a DOI in Unpaywall. Returns a structured outcome — never throws
     * for a DOI that simply has no OA copy or that Unpaywall doesn't know.
     * Throws `McpError(ServiceUnavailable)` only for network/server failures.
     */
    resolve(doi: string, signal?: AbortSignal): Promise<UnpaywallResolution>;
    /**
     * Fetch the content at an Unpaywall location. Prefers `url_for_pdf` when
     * present (direct PDF bytes) and falls back to `url` (HTML landing page).
     * Throws `McpError(ServiceUnavailable)` on network/server failures or
     * unreadable responses — caller handles partial failures.
     */
    fetchContent(location: UnpaywallLocation, signal?: AbortSignal): Promise<UnpaywallContent>;
    private fetchAs;
}
/**
 * Initialize the Unpaywall service if `UNPAYWALL_EMAIL` is configured.
 * Safe to call regardless — absence of the env var leaves the service unset,
 * and `getUnpaywallService()` returns `undefined`.
 */
export declare function initUnpaywallService(): void;
/** Returns the initialized service, or `undefined` when the fallback is disabled. */
export declare function getUnpaywallService(): UnpaywallService | undefined;
//# sourceMappingURL=unpaywall-service.d.ts.map