/**
 * detect-remote-backend.ts
 *
 * Answers one question for the wholesale-artifact-loss guard
 * (`W-detect-wholesale-artifact-loss`): was a *remote* artifact backend
 * (GCS-direct or API-Gateway) wired for this run?
 *
 * The signal can't come from the manifest — a wholesale upload failure leaves
 * every section `store: "local"`, which is byte-for-byte what a legitimate
 * local-only run produces. So the detector reads it from the actual writer
 * wiring instead. The composition root layers a remote writer under a
 * `FanoutArtifactWriter([remote, local])` when (and only when) credentials are
 * present; this walks the decorator chain to find that fanout's remote leg.
 *
 * Walking (rather than threading a boolean through `PipelineState`) keeps the
 * signal anchored to the real wiring and mirrors `findAccumulator` in
 * `finalize-run-step.ts`.
 */
import type { ArtifactWriter } from "../_vendor/ailf-core/index.d.ts";
/**
 * Walk a writer's decorator chain and report whether a remote backend is
 * reachable. Unwraps `InstrumentedArtifactWriter` / `AccumulatingArtifactWriter`
 * decorators and descends into a `FanoutArtifactWriter`'s delegates. Returns
 * `false` for a local-only or no-op writer.
 */
export declare function hasRemoteArtifactBackend(writer: ArtifactWriter | undefined): boolean;
