import * as Maybe from './maybe'; export declare type Err = { kind: 'Err'; error: Error; }; export declare type Ok = { kind: 'Ok'; value: Value; }; export declare type Result = Ok | Err; export declare function Ok(value: Value): Result; export declare function Err(error: Error): Result; export declare function withDefault(value: Value, result: Result): Value; export declare function either(result: Result): A; export declare function toMaybe(result: Result): Maybe.Maybe; export declare function fromMaybe(error: Error, maybe: Maybe.Maybe): Result; export declare function map(func: (val: A) => Value, result: Result): Result; export declare function map2(func: (firstResult: A, secondResult: B) => Value, firstResult: Result, secondResult: Result): Result; export declare function map3(func: (firstResult: A, secondResult: B, thirdResult: C) => Value, firstResult: Result, secondResult: Result, thirdResult: Result): Result; export declare function mapError(func: (val: ErrorA) => ErrorB, result: Result): Result; export declare function andThen(func: (value: A) => Result, result: Result): Result;