/**
 * @typed/fp/Reader is an extension to fp-ts/Reader with ChainRec + MonadRec instances.
 *
 * @since 0.9.2
 */
import { ChainRec2 } from 'fp-ts/ChainRec';
import * as E from 'fp-ts/Either';
import * as R from 'fp-ts/Reader';
import { MonadRec2 } from './MonadRec';
import { Provide2, ProvideAll2, ProvideSome2, UseAll2, UseSome2 } from './Provide';
export * from 'fp-ts/Reader';
/**
 * @since 0.9.2
 * @category Combinator
 */
export declare const chainRec: <A, R, B>(f: (value: A) => R.Reader<R, E.Either<A, B>>) => (value: A) => R.Reader<R, B>;
/**
 * @since 0.9.2
 * @category Instance
 */
export declare const ChainRec: ChainRec2<R.URI>;
/**
 * @since 0.9.2
 * @category Instance
 */
export declare const MonadRec: MonadRec2<R.URI>;
/**
 * @since 0.9.2
 * @category Combinator
 */
export declare const useSome: <R1>(provided: R1) => <R2, A>(reader: R.Reader<R1 & R2, A>) => R.Reader<R2, A>;
/**
 * @since 0.9.2
 * @category Combinator
 */
export declare const provideSome: <R1>(provided: R1) => <R2, A>(reader: R.Reader<R1 & R2, A>) => R.Reader<R2, A>;
/**
 * @since 0.9.2
 * @category Combinator
 */
export declare const useAll: <R1>(provided: R1) => <A>(reader: R.Reader<R1, A>) => R.Reader<unknown, A>;
/**
 * @since 0.9.2
 * @category Combinator
 */
export declare const provideAll: <R1>(provided: R1) => <A>(reader: R.Reader<R1, A>) => R.Reader<unknown, A>;
/**
 * @since 0.9.2
 * @category Instance
 */
export declare const UseSome: UseSome2<R.URI>;
/**
 * @since 0.9.2
 * @category Instance
 */
export declare const UseAll: UseAll2<R.URI>;
/**
 * @since 0.9.2
 * @category Instance
 */
export declare const ProvideSome: ProvideSome2<R.URI>;
/**
 * @since 0.9.2
 * @category Instance
 */
export declare const ProvideAll: ProvideAll2<R.URI>;
/**
 * @since 0.9.2
 * @category Instance
 */
export declare const Provide: Provide2<R.URI>;
//# sourceMappingURL=Reader.d.ts.map