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; }