/** * @since 2.4.0 */ import { HKT, Kind, Kind2, URIS, URIS2 } from './HKT' import { Monad, Monad1, Monad2 } from './Monad' import { Semigroup } from './Semigroup' import { These } from './These' /** * @category model * @since 2.4.0 */ export interface TheseT extends HKT> {} /** * @since 2.4.0 */ export interface TheseM { readonly map: (fa: TheseT, f: (a: A) => B) => TheseT readonly bimap: (fa: TheseT, f: (e: E) => N, g: (a: A) => B) => TheseT readonly mapLeft: (fa: TheseT, f: (e: E) => N) => TheseT readonly fold: ( fa: TheseT, onLeft: (e: E) => HKT, onRight: (a: A) => HKT, onBoth: (e: E, a: A) => HKT ) => HKT readonly swap: (fa: TheseT) => TheseT readonly rightM: (ma: HKT) => TheseT readonly leftM: (me: HKT) => TheseT readonly left: (e: E) => TheseT readonly right: (a: A) => TheseT readonly both: (e: E, a: A) => TheseT readonly toTuple: (fa: TheseT, e: E, a: A) => HKT readonly getMonad: ( S: Semigroup ) => { readonly _E: E readonly map: (ma: TheseT, f: (a: A) => B) => TheseT readonly of: (a: A) => TheseT readonly ap: (mab: TheseT B>, ma: TheseT) => TheseT readonly chain: (ma: TheseT, f: (a: A) => TheseT) => TheseT } } /** * @category model * @since 2.4.0 */ export declare type TheseT1 = Kind> /** * @since 2.4.0 */ export interface TheseM1 { readonly map: (fa: TheseT1, f: (a: A) => B) => TheseT1 readonly bimap: (fa: TheseT1, f: (e: E) => N, g: (a: A) => B) => TheseT1 readonly mapLeft: (fa: TheseT1, f: (e: E) => N) => TheseT1 readonly fold: ( fa: TheseT1, onLeft: (e: E) => Kind, onRight: (a: A) => Kind, onBoth: (e: E, a: A) => Kind ) => Kind readonly swap: (fa: TheseT1) => TheseT1 readonly rightM: (ma: Kind) => TheseT1 readonly leftM: (me: Kind) => TheseT1 readonly left: (e: E) => TheseT1 readonly right: (a: A) => TheseT1 readonly both: (e: E, a: A) => TheseT1 readonly toTuple: (fa: TheseT1, e: E, a: A) => Kind readonly getMonad: ( S: Semigroup ) => { readonly _E: E readonly map: (ma: TheseT1, f: (a: A) => B) => TheseT1 readonly of: (a: A) => TheseT1 readonly ap: (mab: TheseT1 B>, ma: TheseT1) => TheseT1 readonly chain: (ma: TheseT1, f: (a: A) => TheseT1) => TheseT1 } } /** * @category model * @since 2.4.0 */ export declare type TheseT2 = Kind2> /** * @since 2.4.0 */ export interface TheseM2 { readonly map: (fa: TheseT2, f: (a: A) => B) => TheseT2 readonly bimap: (fa: TheseT2, f: (e: E) => N, g: (a: A) => B) => TheseT2 readonly mapLeft: (fa: TheseT2, f: (e: E) => N) => TheseT2 readonly fold: ( fa: TheseT2, onLeft: (e: E) => Kind2, onRight: (a: A) => Kind2, onBoth: (e: E, a: A) => Kind2 ) => Kind2 readonly swap: (fa: TheseT2) => TheseT2 readonly rightM: (ma: Kind2) => TheseT2 readonly leftM: (me: Kind2) => TheseT2 readonly left: (e: E) => TheseT2 readonly right: (a: A) => TheseT2 readonly both: (e: E, a: A) => TheseT2 readonly toTuple: (fa: TheseT2, e: E, a: A) => Kind2 readonly getMonad: ( S: Semigroup ) => { readonly _E: E readonly map: (ma: TheseT2, f: (a: A) => B) => TheseT2 readonly of: (a: A) => TheseT2 readonly ap: (mab: TheseT2 B>, ma: TheseT2) => TheseT2 readonly chain: (ma: TheseT2, f: (a: A) => TheseT2) => TheseT2 } } /** * @since 2.4.0 */ export declare function getTheseM(M: Monad2): TheseM2 export declare function getTheseM(M: Monad1): TheseM1 export declare function getTheseM(M: Monad): TheseM