//#region src/pregel/utils/timeout.d.ts
/**
 * Configuration for timing out node attempts.
 *
 * A timeout applies to a single attempt of a node/task. When a node has a
 * {@link RetryPolicy}, the timer resets for each retry attempt.
 *
 * Timeouts are expressed in **milliseconds**, matching other LangGraph.js
 * durations (e.g. {@link RetryPolicy} intervals and `stepTimeout`).
 *
 * @remarks
 * Cooperative cancellation: timeouts rely on aborting the node's
 * {@link AbortSignal} and dropping its buffered writes. A node that ignores its
 * `signal` and performs blocking work cannot be interrupted mid-operation, but
 * its writes are still discarded and `NodeTimeoutError` is raised.
 */
type TimeoutPolicy = {
  /**
   * Hard wall-clock cap (in milliseconds) for a single node attempt.
   *
   * This timeout is never refreshed by progress signals or
   * `runtime.heartbeat()`.
   */
  runTimeout?: number;
  /**
   * Maximum time (in milliseconds) a single node attempt may go without
   * observable progress before timing out.
   *
   * Refreshed by writes, custom stream writer calls, child-task scheduling,
   * LangChain callback events emitted under the node's run, and explicit
   * `runtime.heartbeat()` calls (see {@link TimeoutPolicy.refreshOn}).
   */
  idleTimeout?: number;
  /**
   * Which signals refresh {@link TimeoutPolicy.idleTimeout}.
   *
   * - `"auto"` (default): refreshes on standard graph progress signals and
   *   explicit heartbeats.
   * - `"heartbeat"`: refreshes only on explicit `runtime.heartbeat()` calls.
   */
  refreshOn?: "auto" | "heartbeat";
};
//#endregion
export { TimeoutPolicy };
//# sourceMappingURL=timeout.d.cts.map