/**
* wrapIO a value in the IO monad
*/
export declare const wrapIO: (a: A) => IO;
/**
* safeIO accepts a function that has side effects and wrapIOs it in an IO Monad.
*/
export declare const safeIO: (f: () => A) => IO;
export declare const pure: (a: A) => IO;
export declare const suspend: (f: () => A) => IO;
/**
* IO monadic type for containing interactions with the 'real world'.
*/
export declare class IO {
private effect;
constructor(effect: () => A);
static safeIO: (f: () => A) => IO;
static pure: (a: A) => IO;
static suspend: (f: () => A) => IO;
static chain: (f: (a: A) => IO) => (m: IO) => IO;
of(v: A): IO;
map(f: (a: A) => B): IO;
mapIn(b: B): IO;
/**
* chain
*/
chain(f: (a: A) => IO): IO;
chainIn(b: B): IO;
/**
* run
*/
run(): A;
}