import { IO } from "jabz/io";
import { Monad } from "jabz/monad";
import { Future } from "./future";
import { Behavior } from "./behavior";
import { Stream } from "./stream";
export declare abstract class Now implements Monad {
abstract run(): A;
of(b: B): Now;
static of(b: B): Now;
chain(f: (a: A) => Now): Now;
static multi: boolean;
multi: boolean;
flatten: () => Now;
map: (f: (a: A) => B) => Now;
mapTo: (b: B) => Now;
ap: (a: Now<(a: A) => B>) => Now;
lift: (f: Function, ...ms: any[]) => Now;
}
export declare function async(comp: IO): Now>;
export declare function sample(b: Behavior): Now;
export declare function performStream(s: Stream>): Now>;
export declare function performStreamLatest(s: Stream>): Now>;
export declare function performStreamOrdered(s: Stream>): Now>;
export declare function plan(future: Future>): Now>;
export declare function runNow(now: Now>): Promise;