export type Result<Ok, Err> = {
    ok: true;
    value: Ok;
} | {
    ok: false;
    error: Err;
};
export declare const Ok: <Ok>(value: Ok) => {
    readonly ok: true;
    readonly value: Ok;
};
export declare const Err: <Err>(error: Err) => {
    readonly ok: false;
    readonly error: Err;
};
export declare const val: <O, E>(r: Result<O, E>) => O | E;
export declare const EMPTY_ERR: {
    readonly ok: false;
    readonly error: undefined;
};
/**
 * Wrap an async operation that may throw an Error (`try-catch` style) into checked exception style
 * @param op The operation function
 */
export declare function wrapAsync<T, E = unknown>(op: () => Promise<T>): Promise<Result<T, E>>;
