/** * Access planner — decides the best retrieval route for a candidate paper. * * Implements the routing logic from design-plan.md §5.2: * 1. Canonicalize identifier (prefer DOI) * 2. Infer publisher from DOI prefix / Crossref metadata * 3. Check local cache * 4. Check Zotero (if enabled) * 5. Check OA routes (OpenAlex, Unpaywall, Europe PMC) * 6. Evaluate publisher API routes (Elsevier, Springer OA, Wiley TDM) * 7. Evaluate browser routes * 8. Fall back to manual import */ import type { AppConfig } from "../config.js"; import type { CandidatePaper, AccessPlan } from "../schemas/index.js"; export interface PlanContext { /** Resolved OA status from OpenAlex */ oaOpenAlex: { is_oa: boolean; best_oa_url: string | null; } | null; /** Resolved OA status from Unpaywall */ oaUnpaywall: { is_oa: boolean; best_oa_url: string | null; } | null; /** Publisher inferred from DOI prefix or Crossref */ publisher: string | null; /** Whether a local cache hit was found */ cacheHit: boolean; /** Notes accumulated during planning */ notes: string[]; } /** * Create an access plan for a single candidate paper. */ export declare function createAccessPlan(candidate: CandidatePaper, config: AppConfig): Promise; //# sourceMappingURL=access-planner.d.ts.map