/**
 * EnvThese is a TheseT of Env.
 * @since 0.9.7
 */
import { Semigroup } from 'fp-ts/Semigroup';
import * as TH from 'fp-ts/These';
import * as E from './Env';
/**
 * @since 0.9.7
 * @category Model
 */
export interface EnvThese<R, E, A> extends E.Env<R, TH.These<E, A>> {
}
/**
 * @since 0.9.7
 * @category Constructor
 */
export declare const getAp: <E>(S: Semigroup<E>) => <R, A>(fa: E.Env<R, TH.These<E, A>>) => <B>(fab: E.Env<R, TH.These<E, (a: A) => B>>) => E.Env<R, TH.These<E, B>>;
/**
 * @since 0.9.7
 * @category Combinator
 */
export declare const bimap: <E, G, A, B>(f: (e: E) => G, g: (a: A) => B) => <R>(fea: E.Env<R, TH.These<E, A>>) => E.Env<R, TH.These<G, B>>;
/**
 * @since 0.9.7
 * @category Constructor
 */
export declare const both: <E, A, R>(e: E, a: A) => E.Env<R, TH.These<E, A>>;
/**
 * @since 0.9.7
 * @category Combinator
 */
export declare const getChain: <E>(S: Semigroup<E>) => <A, R, B>(f: (a: A) => E.Env<R, TH.These<E, B>>) => (ma: E.Env<R, TH.These<E, A>>) => E.Env<R, TH.These<E, B>>;
/**
 * @since 0.9.7
 * @category Constructor
 */
export declare const left: <E, R, A = never>(e: E) => E.Env<R, TH.These<E, A>>;
/**
 * @since 0.9.7
 * @category Constructor
 */
export declare const leftF: <R, E, A = never>(fe: E.Env<R, E>) => E.Env<R, TH.These<E, A>>;
/**
 * @since 0.9.7
 * @category Combinator
 */
export declare const map: <A, B>(f: (a: A) => B) => <R, E>(fa: E.Env<R, TH.These<E, A>>) => E.Env<R, TH.These<E, B>>;
/**
 * @since 0.9.7
 * @category Combinator
 */
export declare const mapLeft: <E, G>(f: (e: E) => G) => <R, A>(fea: E.Env<R, TH.These<E, A>>) => E.Env<R, TH.These<G, A>>;
/**
 * @since 0.9.7
 * @category Combinator
 */
export declare const match: <E, B, A>(onLeft: (e: E) => B, onRight: (a: A) => B, onBoth: (e: E, a: A) => B) => <R>(ma: E.Env<R, TH.These<E, A>>) => E.Env<R, B>;
/**
 * @since 0.9.7
 * @category Combinator
 */
export declare const matchW: <E, B, A, C, D>(onLeft: (e: E) => B, onRight: (a: A) => C, onBoth: (e: E, a: A) => D) => <R>(ma: E.Env<R, TH.These<E, A>>) => E.Env<R, B | C | D>;
/**
 * @since 0.9.7
 * @category Combinator
 */
export declare const matchE: <E, R, B, A>(onLeft: (e: E) => E.Env<R, B>, onRight: (a: A) => E.Env<R, B>, onBoth: (e: E, a: A) => E.Env<R, B>) => (ma: E.Env<R, TH.These<E, A>>) => E.Env<R, B>;
/**
 * @since 0.9.7
 * @category Combinator
 */
export declare const matchEW: <E, R, B, A, C, D>(onLeft: (e: E) => E.Env<R, B>, onRight: (a: A) => E.Env<R, C>, onBoth: (e: E, a: A) => E.Env<R, D>) => (ma: E.Env<R, TH.These<E, A>>) => E.Env<R, B | C | D>;
/**
 * @since 0.9.7
 * @category Constructor
 */
export declare const right: <A, R, E = never>(a: A) => E.Env<R, TH.These<E, A>>;
/**
 * @since 0.9.7
 * @category Constructor
 */
export declare const rightF: <R, A, E = never>(fa: E.Env<R, A>) => E.Env<R, TH.These<E, A>>;
/**
 * @since 0.9.7
 * @category Combinator
 */
export declare const swap: <R, E, A>(ma: E.Env<R, TH.These<E, A>>) => E.Env<R, TH.These<A, E>>;
/**
 * @since 0.9.7
 * @category Combinator
 */
export declare const toTuple2: <E, A>(e: import("fp-ts/function").Lazy<E>, a: import("fp-ts/function").Lazy<A>) => <R>(fa: E.Env<R, TH.These<E, A>>) => E.Env<R, readonly [E, A]>;
//# sourceMappingURL=EnvThese.d.ts.map