import { PType } from "../../PType/index.js";
import { PFn, PLam } from "../../PTypes/index.js";
import { Term } from "../../Term/index.js";
/**
 * for reference the "Z combinator in js": https://medium.com/swlh/y-and-z-combinators-in-javascript-lambda-calculus-with-real-code-31f25be934ec
 *
 * ```js
 *  const Zcombinator = (
 *  	Z => (
 *  		toMakeRecursive => Z( value => toMakeRecursive(toMakeRecursive)(value) )
 *  	)( toMakeRecursive => Z( value => toMakeRecursive(toMakeRecursive)(value)) )
 *  );
 * ```
 * of type
 * ```js
 * Z => toMakeRecursive => value => result
 * ```
 * and ```toMakeRecursive``` has to be of type
 * ```js
 * self => value => result
 * ```
 */
export declare function _precursive<A extends PType, B extends PType>(fnBody: Term<PLam<PLam<A, B>, // self
PLam<A, B>>>): Term<PFn<[A], B>>;
