import Monad from "../../specifications/Monad";
import { FNA1 } from "../../specifications/Function";
export default class IO implements Monad {
private readonly action;
constructor(action: () => A);
map(fn: (a: A) => B): IO;
ap(other: IO): A extends FNA1 ? IO : never;
static of(value: A): IO;
chain(fn: (action: A) => IO): IO;
join(): IO;
run(): A;
get(): () => A;
inspect(): string;
}