/**
 * Eval-side source-kind registry (W0215).
 *
 * Core declares the generic discriminator pattern (`kind?: string` on
 * `DocSourceConfig` and the four ref interfaces). The taxonomy of *known*
 * kinds lives here, alongside the compile-time check that keeps
 * `KnownDocSourceConfig` and `RefBySource` in lockstep.
 *
 * Adding a new adapter is purely additive: widen `KnownDocSourceConfig` to
 * include the new source type, add the matching entry to `RefBySource`, and
 * register a preset factory in `PRESET_FACTORY_BY_SOURCE` (see
 * `pipeline/compiler/presets/by-source.ts`). The `_Exhaustive` assertion
 * below fails to compile when those three sets drift.
 */
import type { DriveDocRef, GoogleDriveSource } from "./google-drive/types.js";
import type { SanityContentLakeSource, SanityDocRef } from "./sanity-doc-fetcher.js";
/**
 * Union of every source kind the eval package knows how to dispatch to.
 */
export type KnownDocSourceConfig = GoogleDriveSource | SanityContentLakeSource;
/**
 * Maps each source `kind` literal to the ref union its fetcher accepts.
 *
 * Adapters use `RefForSource<K>` to type their accepted refs — the
 * `_Exhaustive` assertion below guarantees both sides stay aligned.
 */
export interface RefBySource {
    "google-drive": DriveDocRef;
    "sanity-content-lake": SanityDocRef;
}
/**
 * The ref union accepted by the fetcher registered for source kind `K`.
 *
 * @example
 * type SanityRefs = RefForSource<"sanity-content-lake">  // = SanityDocRef
 * type DriveRefs  = RefForSource<"google-drive">         // = DriveDocRef (M4)
 */
export type RefForSource<K extends KnownDocSourceConfig["kind"]> = RefBySource[K];
/**
 * The kind assumed for untagged `DocSourceConfig` entries (backward compat).
 * Typed as the literal (not the kind union) so callers can use it where
 * narrowing to `SanityContentLakeSource` is required.
 */
export declare const DEFAULT_SOURCE_KIND: "sanity-content-lake";
