import { Result, Ok, Err } from "./types";
export { Result, Ok, Err };
export declare class Results {
    static ok<T>(value: T): Ok<T> & Result<T, never>;
    static err<E extends Error>(error: E): Err<E> & Result<never, E>;
    static isOk<T, E extends Error>(result: Result<T, E>): result is Ok<T>;
    static isErr<T, E extends Error>(result: Result<T, E>): result is Err<E>;
    static unwrap<T, E extends Error>(result: Result<T, E>): T;
    static unwrapOr<T, E extends Error>(result: Result<T, E>, defaultValue: T): T;
    static unwrapOrElse<T, E extends Error>(result: Result<T, E>, fn: (error: E) => T): T;
    static map<T, E extends Error, U>(result: Result<T, E>, fn: (value: T) => U): Result<U, E>;
    static mapErr<T, E extends Error, F extends Error>(result: Result<T, E>, fn: (error: E) => F): Result<T, F>;
    static andThen<T, E extends Error, U>(result: Result<T, E>, fn: (value: T) => Result<U, E>): Result<U, E>;
    static orElse<T, E extends Error, F extends Error>(result: Result<T, E>, fn: (error: E) => Result<T, F>): Result<T, F>;
}
