import * as Event from "./Event"; import { EventStream } from "./EventStream"; import { HKT, Observable } from "./Observable"; import { Property } from "./Property"; export declare type In = HKT & Observable; export declare type Out = ObsType extends Property ? Property : ObsType extends EventStream ? EventStream : Observable; export declare type JSMap = Map; export declare type JSSet = Set; export declare type Projection = (val: A) => B; export declare type Predicate = (val: A) => boolean; export declare type Accum = (state: S, value: T) => S; export declare type FlatAccum = (state: S, value: T) => S | Observable; export declare type Dispose = () => void; export declare type AnyEvent = Event.Next | Event.Error | Event.End; export declare type AnyObs = Property | EventStream; export declare type Handler = (event: AnyEvent) => typeof Event.noMore | any; export declare type ValueHandler = (val: T) => typeof Event.noMore | any; export declare type ValuesHandler = (...vals: T[]) => typeof Event.noMore | any; export declare type ErrorHandler = (err: Error) => typeof Event.noMore | any; export declare type EndHandler = () => void; export declare type SinkEvent = T | AnyEvent | Array>; export declare type SinkResult = typeof Event.noMore | typeof Event.more; export declare type Sink = (event: SinkEvent) => SinkResult; export declare type Subscribe = (sink: Sink) => Dispose | any; export declare type AsyncCallback = (callback: (result: T | AnyEvent) => void) => void; export declare type AsyncNodeCallback = (callback: (error: Error | null, result?: T | AnyEvent) => void) => void;