interface Ok { readonly ok: true; readonly value: A; } interface Err { readonly ok: false; readonly error: E; } type Result = Ok | Err; declare function ok(value: A): Ok; declare function err(error: E): Err; declare function isOk(result: Result): result is Ok; declare function isErr(result: Result): result is Err; /** * Collapses a `Result` back into the throwing world: returns the value or throws * via `toError`. Used by the throwing wrappers that sit over the `Result` core so * existing call sites keep their `await`/`throw` ergonomics. */ declare function unwrapResult(result: Result, toError: (error: E) => unknown): A; export { Err, Ok, Result, err, isErr, isOk, ok, unwrapResult };