/**
 * Created by beenotung on 3/8/17.
 */
export interface Either<L, R> {
    isLeft: boolean;
    isRight: boolean;
    getLeft(): L;
    getRight(): R;
    mmap<L2, R2>(fl: (l: L) => L2, fr: (r: R) => R2): Either<L2, R2>;
    mapLeft<L2>(f: (l: L) => L2): Either<L2, R>;
    mapRight<R2>(f: (r: R) => R2): Either<L, R2>;
    bindLeft<L2>(f: (l: L) => Either<L2, R>): Either<L2, R>;
    bindRight<R2>(f: (r: R) => Either<L, R2>): Either<L, R2>;
}
export declare function right<L, R>(r: R): Either<L, R>;
export declare function left<L, R>(l: L): Either<L, R>;
export declare namespace Either {
    function get<A>(either: Either<A, A>): A;
}
