import type { EventSink } from '@substrat-run/kernel'; /** * The Pipelines implementation of the `EventSink` seam (#1334) โ€” Tier 2 proper, the row * kernel-design ยง5.3 names for the Cloudflare adapter: "Event transport | Pipelines โ†’ * Iceberg/R2". `createR2EventSink` is the same seam's NDJSON staging shape, and the pure * adapter's counterpart; the drain never learns which it is bound to. * * **Ordering, and what a partial ship means.** A batch over the request budget is packed * into several requests and sent one after another. If the third fails, `ship` throws, * the sweep stamps NOTHING, and the whole batch is offered again next tick โ€” so the * first two chunks land twice. That is the trade the seam's contract already names: at * least once, never fewer, because the lake is keyed by event id and a duplicate is * reconcilable where a hole is not. Sending sequentially rather than in parallel keeps * the duplicated prefix small and bounded instead of arbitrary. * * **What a resolved `send` claims.** Cloudflare documents the promise as resolving "when * records are confirmed as ingested" into the durable stream. That is what licenses the * `drainedAt` stamp, and it is the one assumption this sink rests on: if a future runtime * resolves early, "the lake has everything" silently stops being checkable. It is stated * here so that a change to it is a change to something written down. */ export declare function createPipelinesEventSink(stream: unknown): EventSink; //# sourceMappingURL=pipelines-sink.d.ts.map