declare class IO<A> {
    private readonly effect;
    constructor(effect: () => A);
    run(): A;
    map<B>(fn: (a: A) => B): IO<B>;
    ap<B>(fab: IO<(a: A) => B>): IO<B>;
    chain<B>(fn: (a: A) => IO<B>): IO<B>;
    static of<A>(a: A): IO<A>;
    static from<A>(fn: () => A): IO<A>;
}
export default IO;
