declare class Failure<T, E> {
    readonly error: E;
    constructor(error: E);
    isError(): this is Failure<T, E>;
}
declare class Success<T, E> {
    readonly value: T;
    constructor(value: T);
    isError(): this is Failure<T, E>;
}
export type TFailable<T, E> = Success<T, E> | Failure<T, E>;
export interface IFailableFactory {
    success<T>(value: T): Success<T, any>;
    fail<E>(error: E): Failure<any, E>;
}
export declare const failableFactory: {
    success: <T, E>(value: T) => Success<T, E>;
    fail: <T, E>(error: E) => Failure<T, E>;
};
export {};
