import Traversable from "../../specifications/Traversable";
import Monad from "../../specifications/Monad";
import { Applicative, ApplicativeTypeRep } from "../../specifications/Applicative";
import { FNA1 } from "../../specifications/Function";
export default class Identity implements Monad, Traversable {
private readonly value;
constructor(value: A);
map(fn: (a: A) => B): Identity;
ap(other: Identity): A extends FNA1 ? Identity : Identity;
static of(value: A): Identity;
chain(fn: (value: A) => Identity): Identity;
reduce(reducer: (accumulator: B, value: A) => B, initial: B): B;
traverse(TypeRep: ApplicativeTypeRep>, fn: (a: A) => Applicative): Applicative>;
get(): A;
join(): Identity;
inspect(): string;
}