import * as Duration from "effect/Duration";
import * as Effect from "effect/Effect";
import { type AppError, type AppErrorMetadata } from "../app-error/index.js";
export interface RegistryRequestPolicy {
readonly requestTimeout: Duration.Input;
readonly totalDeadline: Duration.Input;
readonly maxAttempts: number;
readonly initialBackoff: Duration.Input;
readonly maxBackoff: Duration.Input;
}
export declare const DEFAULT_REGISTRY_REQUEST_POLICY: RegistryRequestPolicy;
export type RegistryRequestReplaySafety = {
readonly kind: "safe";
} | {
readonly kind: "mutation";
} | {
readonly kind: "idempotency-keyed";
readonly idempotencyKey: string;
};
export declare const executeRegistryRequest: (effect: Effect.Effect, args: {
readonly operation: string;
readonly request: NonNullable;
readonly replaySafety: RegistryRequestReplaySafety;
readonly mapError: (error: E) => AppError;
readonly policy?: RegistryRequestPolicy;
}) => Effect.Effect;
//# sourceMappingURL=request-policy.d.ts.map