/**
 * SanityDocFetcher — full adapter for the DocFetcher port.
 *
 * Fetches documentation from the Sanity Content Lake with support for:
 * - Basic slug-based fetching (GROQ → Portable Text → Markdown)
 * - Perspective-aware fetching (content release diffing)
 * - Document overlays (replace/append canonical docs by document ID)
 * - Direct URL fetching (markdown endpoints + content negotiation)
 * - Custom HTTP headers
 * - Document manifest (traceability: _id, _rev, slug, title)
 * - Release impact metadata (added/modified/removed/unchanged)
 *
 * The pipeline step (FetchDocsStep) calls ctx.docFetcher.fetch() and
 * writes the returned metadata to disk for downstream consumption.
 */
import { type DocFetcher, type DocSourceConfig, type FetchResult, type GeneralizedTaskDefinition } from "../../_vendor/ailf-core/index.d.ts";
export declare class SanityDocFetcher implements DocFetcher {
    private readonly rootDir;
    constructor(rootDir: string);
    fetch(tasks: GeneralizedTaskDefinition[], source?: DocSourceConfig): Promise<FetchResult>;
    private fetchInternal;
    private fetchManifest;
    /**
     * Batch-resolve document ID refs without filtering on `_type`.
     *
     * Articles are routed back into the slug-flow (so manifest, perspective
     * diffing, and overlay handling continue to work unchanged). Non-articles
     * are rendered eagerly via the renderer registry — `typesReference` gets
     * a high-fidelity formatter; anything else falls through to the default
     * walker so authors can pin marketing pages, glossary entries, etc.
     * without an AILF code change.
     *
     * Three log shapes:
     *   - `info` — doc rendered with the default formatter (suggests a
     *     dedicated renderer would improve fidelity)
     *   - `warn` — registered renderer produced empty content (W0195 AC#3)
     *   - `warn` — id had no matching document (existed/wrong tenant/typo)
     */
    private resolveIdRefs;
    /**
     * Fetch the raw body of a Sanity file asset URL, used by the
     * `typesReference` renderer to inline typedoc JSON. Returns `null`
     * on any HTTP/network failure rather than throwing — the renderer
     * surfaces a placeholder so the rest of the context still renders.
     *
     * Wrapped in a 30s `AbortSignal.timeout` so a slow CDN can't hang the
     * eval pipeline indefinitely. Timeouts surface as a single `null`
     * return like any other fetch failure.
     */
    private fetchAttachmentBody;
    /**
     * Resolve path-based canonical doc references to their article slugs.
     *
     * Handles two path formats:
     * - Simple path: "webhooks" → resolves as slug lookup
     * - Section-qualified path: "content-lake/webhooks" → matches section + slug
     *
     * @see docs/design-docs/canonical-doc-resolution.md
     */
    private resolvePathRefsToSlugs;
    /**
     * Expand perspective canonical doc refs to the article slugs within
     * each content release.
     *
     * Each perspective ref resolves to ALL article documents versioned in
     * that release. This is the one-to-many expansion described in the
     * canonical-doc-resolution design doc.
     *
     * The perspective value from the ref is used as both the release ID
     * for the versioned document query AND the client perspective for
     * fetching content. If a source-level perspective is also set, the
     * ref-level perspective takes precedence for its own resolution.
     *
     * @see docs/design-docs/canonical-doc-resolution.md
     */
    private resolvePerspectiveRefsToSlugs;
    private identifyAffectedDocs;
    private resolveDocumentOverlay;
    private fetchArticleById;
    private fetchArticleBySlug;
    private fetchArticleBySlugWithPerspective;
    private fetchCanonicalDocs;
    /**
     * Generate feature-area context files (one per GROQ feature area query).
     *
     * This is NOT part of the DocFetcher port — it's an opt-in CLI feature
     * used by `ailf fetch-docs --include-feature-areas`.
     */
    fetchFeatureAreaContexts(source?: DocSourceConfig): Promise<void>;
    /**
     * Generate a full corpus context file (all articles in one markdown file).
     *
     * This is NOT part of the DocFetcher port — it's an opt-in CLI feature
     * used by `ailf fetch-docs --include-corpus`.
     */
    fetchFullCorpus(source?: DocSourceConfig): Promise<void>;
}
