import * as fluture from "fluture"; export declare class Future { private instance; private constructor(); run(onSuccess: Fn, onError: Fn): Cancel; map(mapper: (data: D) => D2): Future; bimap(dataMapper: (data: D) => D2, errorMapper: (error: E) => E2): Future; flatMap(mapper: (data: D) => Future): Future; flatMapError(mapper: (error: E) => Future): Future; toPromise(): Promise; static fromComputation(computation: Computation): Future; static success(data: D): Future; static error(error: E): Future; static join2(future1: Future, future2: Future): Future; static parallel(futures: Array>, options?: { maxConcurrency?: number; }): Future>; static joinObj>>(futuresObj: FuturesObj, options?: { maxConcurrency: number; }): JoinObj; } declare type JoinObj>> = Future, { [K in keyof Futures]: ExtractFutureData; }>; declare type ExtractFutureData = F extends Future ? D : never; declare type ExtractFutureError = F extends Future ? E : never; declare type Fn = { (value: T): void; }; export declare type Cancel = { (): void; }; export declare const noCancel: Cancel; export declare type Computation = (resolve: Fn, reject: Fn) => fluture.Cancel; export declare function wait(ms: number): Future; export declare function fromPromise(res: Promise): Future; export {};