/**
 * deliveryErrors — where an exporter's failures go when nobody is listening.
 *
 * **Telemetry that fails invisibly is indistinguishable from telemetry that
 * works.** Every network-shipping observability adapter has the same problem:
 * `exportEvent` is sync and non-throwing by contract, so the actual delivery
 * happens later, inside a flush the caller never sees. If that flush fails and
 * nothing is wired up, the process keeps running, the dashboard stays empty,
 * and nobody learns anything until someone goes looking for a run that isn't
 * there.
 *
 * Before 8.11.0 each adapter installed its console fallback lazily, INSIDE its
 * own `_onError` method — so a delivery failure, which read the hook rather
 * than calling the method, found `undefined` and vanished. Every CloudWatch,
 * X-Ray and OTEL delivery failure was silent in the ordinary case.
 *
 * The rule this module encodes: **an unheard failure still gets said out loud,
 * but saying it must not become the second outage.** A backend that has been
 * down for an hour would otherwise produce one `console.error` per flush
 * interval for an hour.
 *
 * Role: leaf helper for `adapters/observability/*`. No imports beyond the
 * event type; composed as a field, never inherited.
 */
import type { AgentfootprintEvent } from '../../events/registry.js';
/** What every adapter's `_onError` looks like. */
export type DeliveryErrorSink = (error: Error, event?: AgentfootprintEvent) => void;
/**
 * The default sink: loud on the first failure, then logarithmically quieter.
 *
 * Reports at failures 1, 2, 4, 8, 16, 32 … and stamps the running count, so an
 * ongoing outage is visible (you can see the number climbing) without flooding
 * the log. A consumer-supplied sink is NOT rate-limited — they asked for every
 * failure and can do their own filtering.
 *
 * @param strategyName the adapter's `name` (e.g. `'cloudwatch'`), used to
 *   prefix the line so a multi-exporter process says which one failed.
 */
export declare function rateLimitedConsoleSink(strategyName: string): DeliveryErrorSink;
//# sourceMappingURL=deliveryErrors.d.ts.map