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