import { AppError } from './app-error.js'; type Result = { ok: true; value: T; error: null; } | { ok: false; value: null; error: E; }; declare function ok(value: T): ResultWrapper; declare function err(error: E): ResultWrapper; declare class ResultWrapper { private readonly result; constructor(result: Result); unwrapResult(): Result; isOk(): boolean; isErr(): boolean; map(fn: (value: T) => U): ResultWrapper; mapAsync(fn: (value: T) => Promise): Promise>; mapErr(fn: (error: E) => F): ResultWrapper; flatMap(fn: (value: T) => ResultWrapper): ResultWrapper; tap(fn: (value: T) => void): ResultWrapper; tapErr(fn: (error: E) => void): ResultWrapper; unwrap(): T; unwrapErr(): E; unwrapOr(defaultValue: T): T; unwrapOrElse(fn: (error: E) => T): T; match(handlers: { ok: (value: T) => U; err: (error: E) => U; }): U; toPromise(): Promise; and(other: ResultWrapper): ResultWrapper<[T, U], E | F>; or(other: ResultWrapper): ResultWrapper; } declare function safeAwait(promise: PromiseLike): Promise>; declare function safeFunc(fn: (...args: A) => T, ...args: A): ResultWrapper; declare function isOk(result: Result): result is { ok: true; value: T; error: null; }; declare function isErr(result: Result): result is { ok: false; value: null; error: E; }; declare function unwrap(result: Result): T; declare function unwrapErr(result: Result): E; declare function unwrapOr(result: Result, defaultValue: T): T; declare function map(result: Result, fn: (value: T) => U): Result; declare function mapErr(result: Result, fn: (error: E) => F): Result; export { type Result, ResultWrapper, err, isErr, isOk, map, mapErr, ok, safeAwait, safeFunc, unwrap, unwrapErr, unwrapOr };