export type Cancelable = (res: (a: A) => void, rej: (e: any) => void) => (() => void);
export type DeferredCancelable = {
cancelable: Cancelable,
cancel: () => void,
resolve: (a: A) => void,
reject: (e: any) => void
}
export type NodeCallback = (error: Error, result: A) => void;
export function addFantasyLandInterface(ca: Cancelable): Cancelable;
export function createDeferred(): DeferredCancelable;
export function of(a: A): Cancelable;
export function reject(e: any): Cancelable;
export function never(): Cancelable;
export function later(dt: number, a: A): Cancelable;
export function later(dt: number): (a: A) => Cancelable;
export function laterReject(dt: number, error: any): Cancelable;
export function laterReject(dt: number): (error: any) => Cancelable;
export function fetchResponse({url, spec}: {url: URL|string, spec: RequestInit|{[key: string]: any}}): Cancelable;
export function fetchResponseIsoModule(spec: WindowOrWorkerGlobalScope): (params: {url: URL|string, init: RequestInit|{[key: string]: any}}) => Cancelable;
export function cancelify(f: (...args: any[]) => Promise): (...args: any[]) => Cancelable;
export function cancelifyWithArityAbortable(arity: number, f: (...args: any[]) => Promise): (...args: any[]) => Cancelable;
// :: Number → ((*..., NodeCallback a) → ()) → *... → Cancelable a
export function fromNodeCallbackWithArity(arity: number, f: (args: [...args: any[], callback: NodeCallback]) => void): (...args: any[]) => Cancelable;
// Transformations
export function coalesce(onFailure: (e: any) => B, onSuccess: (a?: A) => B, cc: Cancelable): Cancelable;
export function coalesce(onFailure: (e: any) => B, onSuccess: (a?: A) => B): (cc: Cancelable) => Cancelable;
export function map(fn: (a: A) => B, ma: Cancelable): Cancelable;
export function map(fn: (a: A) => B): (ma: Cancelable) => Cancelable;
export function biMap(fnLeft: (x: any) => any, fn: (a: A) => B, ma: Cancelable): Cancelable;
export function biMap(fnLeft: (x: any) => any, fn: (a: A) => B): (ma: Cancelable) => Cancelable;
export function pluck(propertyName: string, mKv: Cancelable>): Cancelable;
export function pluck(propertyName: string): (mKv: Cancelable>) => Cancelable;
export function pluck(index: number, mKv: Cancelable<[T]>): Cancelable;
export function pluck(index: number): (mKv: Cancelable<[T]>) => Cancelable;
export function biChain(fnLeft: (e:any) => Cancelable, fnRight: (x: A) => Cancelable, ma: Cancelable): Cancelable;
export function biChain(fnLeft: (e:any) => Cancelable, fnRight: (x: A) => Cancelable): (ma: Cancelable) => Cancelable;
export function biChain(fnLeft: (e:any) => Cancelable): (fnRight: (x: A) => Cancelable) => (ma: Cancelable) => Cancelable;
export function chain(fn: (x: A) => Cancelable, ma: Cancelable): Cancelable;
export function chain(fn: (x: A) => Cancelable): (ma: Cancelable) => Cancelable;
// Side-Effects
export function bi_tap(onFailure: (e: any) => any, onSuccess: (a: A) => any, ma: Cancelable): Cancelable;
export function bi_tap(onFailure: (e: any) => any, onSuccess: (a: A) => any): (ma: Cancelable) => Cancelable;
export function bi_tap(onFailure: (e: any) => any): (onSuccess: (a: A) => any, ma: Cancelable) => Cancelable;
export function bi_tap(onFailure: (e: any) => any): (onSuccess: (a: A) => any) => (ma: Cancelable) => Cancelable;
// Combinations
export function ap(mfn: Cancelable<(a: A) => B>, mb: Cancelable): Cancelable;
export function ap(mfn: Cancelable<(a: A) => B>): (mb: Cancelable) => Cancelable;
export function liftA2(f: (a: A) => (b: B) => C, ma: Cancelable, mb: Cancelable): Cancelable;
export function liftA2(f: (a: A) => (b: B) => C): (ma: Cancelable, mb: Cancelable) => Cancelable;
export function liftA2(f: (a: A) => (b: B) => C): (ma: Cancelable) => (mb: Cancelable) => Cancelable;
export function liftA3(f: (a: A) => (b: B) => (c: C) => D, ma: Cancelable, mb: Cancelable, mc: Cancelable): Cancelable;
export function liftA3(f: (a: A) => (b: B) => (c: C) => D): (ma: Cancelable, mb: Cancelable, mc: Cancelable) => Cancelable;
export function liftA3(f: (a: A) => (b: B) => (c: C) => D): (ma: Cancelable, mb: Cancelable) => (mc: Cancelable) => Cancelable;
export function liftA4(f: (a: A) => (b: B) => (c: C) => (d: D) => E, ma: Cancelable, mb: Cancelable, mc: Cancelable, md: Cancelable): Cancelable;
export function liftA4(f: (a: A) => (b: B) => (c: C) => (d: D) => E): (ma: Cancelable, mb: Cancelable, mc: Cancelable, md: Cancelable) => Cancelable;
export function liftA4(f: (a: A) => (b: B) => (c: C) => (d: D) => E): (ma: Cancelable, mb: Cancelable, mc: Cancelable) => (md: Cancelable) => Cancelable;
export function race(ma1: Cancelable, ma2: Cancelable): Cancelable;
export function race(ma1: Cancelable): (ma2: Cancelable) => Cancelable;
export function share(ma: Cancelable): Cancelable;