/** @internal * Whether a caught value is the SDK's own suspend signal, which must be * rethrown rather than reported as a step failure. * * Both halves of the check can throw on a hostile value: `instanceof` consults * a proxy's `getPrototypeOf` trap, and reading `.name` its `get` trap. This * runs before anything has been checkpointed, so neither may escape — a value * that fights back is simply not a suspend. */ export declare function isSuspendSignal(e: unknown, suspendCtor: Function): boolean; /** @internal * Serialize a failed `step()` body into the `__wmill_error` marker that task * failures also use, so it can be stored in `completed_steps`. * * The record's final shape is decided by the backend (`wac_failure_record`), * which normalizes task failures through the same function; what is built here * is the raw material plus the envelope the backend recognizes. */ export declare function stepErrorMarker(key: string, e: unknown): Record; /** @internal * Rebuild the error a failed task or step throws. The run that produced the * failure and every later replay go through here: a catch is control flow, * `workflow()` re-runs its body from the top every round, so a handler that * branches on the failure it caught must be handed the same thing in every * round or it dispatches different tasks on the way back. */ export declare function taskErrorFromMarker(marker: any, fallbackMessage: string): Error;