The wire shape of an Outcome. A rejected outcome carries both the typed detail (branded
Amounts and bigints become decimal strings) and a top-level reason derived from
detail.reason — HTTP clients live outside the type system, so the wire keeps the harmless
duplicate for stability even though detail.reason is the sole discriminant in TypeScript.
The wire shape of an Outcome. A rejected outcome carries both the typed
detail(branded Amounts and bigints become decimal strings) and a top-levelreasonderived fromdetail.reason— HTTP clients live outside the type system, so the wire keeps the harmless duplicate for stability even thoughdetail.reasonis the sole discriminant in TypeScript.