/**
 * @typed/fp/Option is an extension to fp-ts/Option with stack-safe
 * ChainRec + MonadRec instances.
 * @since 0.9.2
 */
import { ChainRec1 } from 'fp-ts/ChainRec';
import * as E from 'fp-ts/Either';
import * as O from 'fp-ts/Option';
import { MonadRec1 } from './MonadRec';
/**
 * @since 0.9.2
 * @category Combinator
 */
export declare const chainRec: <A, B>(f: (value: A) => O.Option<E.Either<A, B>>) => (value: A) => O.Option<B>;
/**
 * @since 0.12.1
 * @category Constructor
 */
export declare const struct: <Opts extends Readonly<Record<string, O.Option<any>>>>(opts: Opts) => O.Option<{ readonly [K in keyof Opts]: [Opts[K]] extends [O.Option<infer R>] ? R : never; }>;
/**
 * @since 0.9.2
 * @category Typeclass
 */
export declare const ChainRec: ChainRec1<O.URI>;
/**
 * @since 0.9.2
 * @category Typeclass
 */
export declare const MonadRec: MonadRec1<O.URI>;
export * from 'fp-ts/Option';
//# sourceMappingURL=Option.d.ts.map