import { Effect } from "effect";
import { SealantApiError } from "../errors.js";
/** The most one read waits across all its retries: a whole budget window, and no more. */
export declare const READ_RETRY_BUDGET_MS = 60000;
/**
* How long to wait before reading again after `error` on retry number `attempt` (from 0), or
* `undefined` when the failure is not one a second read can fix.
*/
export declare const readRetryDelayMs: (error: unknown, attempt: number, now?: number) => number | undefined;
/**
* Runs `read`, reading again on a failure {@link readRetryDelayMs} admits, until the total wait
* would pass {@link READ_RETRY_BUDGET_MS} or `deadline`. The failure it ends with names the run.
*/
export declare const retryRead: (read: Effect.Effect, options: {
readonly runId: string;
readonly what: string;
readonly deadline: number;
}) => Effect.Effect;