export interface OkResult { ok: true; result: TResult; } export interface ErrorResult { ok: false; error: TError; } export declare type Result = OkResult | ErrorResult; export declare const Ok: (result: TResult) => OkResult; export declare const Err: (error: TError) => ErrorResult; export declare function throwIfError(result: Result, errorModifier?: (error: TError) => TModifiedError): TResult; export declare function makeThrowable(f: (...args: TArgs) => Result, errorModifier?: (error: TError) => TModifiedError): (...args: TArgs) => TResult; export declare function makeAsyncThrowable(f: (...args: TArgs) => Promise>, errorModifier?: (error: TError) => TModifiedError): (...args: TArgs) => Promise; export interface BaseError { errorType: T; } export declare class RootError extends Error implements BaseError { readonly errorType: T; constructor(errorType: T); } export declare const JSONParseErrorType = "JsonParseError"; export declare class JSONParseError extends RootError { readonly error: Error; constructor(error: Error); } export declare function parseJsonAsResult(data: string): OkResult | ErrorResult; export declare function isOk(result: Result): result is OkResult; export declare function isErr(result: Result): result is ErrorResult;