/**
 * @typed/fp/ReaderEither is an extension of fp-ts/ReaderEither
 *
 * @since 0.9.2
 */
import { ChainRec3 } from 'fp-ts/ChainRec';
import { Either } from 'fp-ts/Either';
import * as RE from 'fp-ts/ReaderEither';
import { MonadRec3 } from './MonadRec';
import { Provide3, ProvideAll3, ProvideSome3, UseAll3, UseSome3 } from './Provide';
/**
 * @since 0.9.2
 * @category Combinator
 */
export declare const chainRec: <A, R, E, B>(f: (a: A) => RE.ReaderEither<R, E, Either<A, B>>) => (value: A) => RE.ReaderEither<R, E, B>;
/**
 * @since 0.9.2
 * @category Instance
 */
export declare const ChainRec: ChainRec3<RE.URI>;
/**
 * @since 0.9.2
 * @category Instance
 */
export declare const MonadRec: MonadRec3<RE.URI>;
/**
 * @since 0.9.2
 * @category Combinator
 */
export declare const useSome: <R1>(provided: R1) => <R2, E, A>(reader: RE.ReaderEither<R1 & R2, E, A>) => RE.ReaderEither<R2, E, A>;
/**
 * @since 0.9.2
 * @category Combinator
 */
export declare const provideSome: <R1>(provided: R1) => <R2, E, A>(reader: RE.ReaderEither<R1 & R2, E, A>) => RE.ReaderEither<R2, E, A>;
/**
 * @since 0.9.2
 * @category Combinator
 */
export declare const useAll: <R1>(provided: R1) => <E, A>(reader: RE.ReaderEither<R1, E, A>) => RE.ReaderEither<unknown, E, A>;
/**
 * @since 0.9.2
 * @category Combinator
 */
export declare const provideAll: <R1>(provided: R1) => <E, A>(reader: RE.ReaderEither<R1, E, A>) => RE.ReaderEither<unknown, E, A>;
/**
 * @since 0.9.2
 * @category Instance
 */
export declare const UseSome: UseSome3<RE.URI>;
/**
 * @since 0.9.2
 * @category Instance
 */
export declare const UseAll: UseAll3<RE.URI>;
/**
 * @since 0.9.2
 * @category Instance
 */
export declare const ProvideSome: ProvideSome3<RE.URI>;
/**
 * @since 0.9.2
 * @category Instance
 */
export declare const ProvideAll: ProvideAll3<RE.URI>;
/**
 * @since 0.9.2
 * @category Instance
 */
export declare const Provide: Provide3<RE.URI>;
export * from 'fp-ts/ReaderEither';
//# sourceMappingURL=ReaderEither.d.ts.map