import { Alt } from '../control/alt';
import { Eq } from '../data/eq';
import { Applicative } from '../control/applicative';
import { Monad } from '../control/monad';
/**
* Identity monad.
*
* This class is here mostly for future iterations of this libary.
* The Identity class typically returns the value supplied for most of its
* operations.
*/
export declare class Identity implements Alt, Applicative, Monad, Eq> {
value: A;
constructor(value: A);
/**
* of
*/
of(a: A): Identity;
/**
* map
*/
map(f: (a: A) => B): Identity;
/**
* chain
*/
chain(f: (a: A) => Identity): Identity;
/**
* ap
*/
ap(i: Identity<(a: A) => B>): Identity;
/**
* alt will prefer whatever Maybe instance provided.
*/
alt(a: Identity): Identity;
/**
* eq
*/
eq(i: Identity): boolean;
}
/**
* pure wraps a value in an Identity.
*/
export declare const pure: (value: A) => Identity;