/**
 * sinks/retry.ts
 *
 * Simple retry utility with exponential backoff for sink operations.
 * Used by the sink runner to retry transient failures (network timeouts,
 * HTTP 429/5xx) without requiring sinks to implement retry logic internally.
 *
 * Policy: 3 retries, exponential backoff (1s → 2s → 4s).
 *
 * @see docs/design-docs/report-store/sink-architecture.md
 */
import type { SinkResult } from "../pipeline/types.js";
/**
 * Retry a sink publish operation with exponential backoff.
 *
 * Only retries on "failed" results — "success" and "skipped" are returned
 * immediately. Thrown exceptions are caught and converted to "failed" results.
 *
 * @param fn - The publish function to retry
 * @param maxRetries - Maximum number of retry attempts (default: 3)
 * @param baseDelayMs - Initial delay in milliseconds (default: 1000)
 * @returns The final SinkResult after all attempts
 */
export declare function withRetry(fn: () => Promise<SinkResult>, maxRetries?: number, baseDelayMs?: number): Promise<SinkResult>;
