import { $, $type, HKT, TyK, TyVar } from '@fp4ts/core';
import { Eq, Semigroup } from '@fp4ts/cats-kernel';
import { Option } from '../option';
import { Either } from '../either';
import { Monad } from '../../monad';
import { MonadError } from '../../monad-error';
import { Bifunctor } from '../../bifunctor';
import { Ior as IorBase } from './algebra';
export type Ior = IorBase;
export declare const Ior: IorObj;
export interface IorObj {
Left(a: A): Ior;
Right(b: B): Ior;
Both(a: A, b: B): Ior;
fromOptions(left: Option, right: Option): Option>;
fromEither(ea: Either): Ior;
tailRecM(S: Semigroup): (s: S) => (f: (s: S) => Ior>) => Ior;
Eq(EqA: Eq, EqB: Eq): Eq>;
readonly Bifunctor: Bifunctor;
Monad(S: Semigroup): Monad<$>;
MonadError(S: Semigroup): MonadError<$, A>;
}
declare module './algebra' {
interface Ior extends HKT {
}
}
/**
* @category Type Constructor
* @category Data
*/
export interface IorF extends TyK<[unknown, unknown]> {
[$type]: Ior, TyVar>;
}
//# sourceMappingURL=ior.d.ts.map