import { HKT, Kind, Kind2, Kind3, URIS, URIS2, URIS3 } from 'fp-ts/lib/HKT'; import { MonadTask, MonadTask1, MonadTask2, MonadTask2C, MonadTask3 } from 'fp-ts/lib/MonadTask'; export interface Subscription { readonly unsubscribe: () => void; } export interface Observer { readonly next: (a: A) => void; readonly end: () => void; } export interface Observable { readonly subscribe: (observer: Observer) => Subscription; } export interface FromEvent { (target: WindowEventHandlers, event: K): HKT; (target: EventTarget, event: string): HKT; } export interface FromEvent1 { (target: WindowEventHandlers, event: K): Kind; (target: EventTarget, event: string): Kind; } export interface FromEvent2 { (target: WindowEventHandlers, event: K): Kind2; (target: EventTarget, event: string): Kind2; } export interface FromEvent2C { (target: WindowEventHandlers, event: K): Kind2; (target: EventTarget, event: string): Kind2; } export interface FromEvent3 { (target: WindowEventHandlers, event: K): Kind3; (target: EventTarget, event: string): Kind3; } export declare type Adapter = [(a: A) => void, HKT]; export declare type Adapter1 = [(a: A) => void, Kind]; export declare type Adapter2 = [(a: A) => void, Kind2]; export declare type Adapter3 = [(a: A) => void, Kind3]; export interface MonadObservable extends MonadTask { readonly fromEvent: FromEvent; readonly fromObservable: (observable: Observable) => HKT; readonly createAdapter: () => Adapter; readonly subscribe: (fa: HKT, observer: Observer) => Subscription; } export interface MonadObservable1 extends MonadTask1 { readonly fromEvent: FromEvent1; readonly fromObservable: (observable: Observable) => Kind; readonly createAdapter: () => Adapter1; readonly subscribe: (fa: Kind, observer: Observer) => Subscription; } export interface MonadObservable2 extends MonadTask2 { readonly fromEvent: FromEvent2; readonly fromObservable: (observable: Observable) => Kind2; readonly createAdapter: () => Adapter2; readonly subscribe: (fa: Kind2, observer: Observer) => Subscription; } export interface MonadObservable2C extends MonadTask2C { readonly fromEvent: FromEvent2C; readonly fromObservable: (observable: Observable) => Kind2; readonly createAdapter: () => Adapter2; readonly subscribe: (fa: Kind2, observer: Observer) => Subscription; } export interface MonadObservable3 extends MonadTask3 { readonly fromEvent: FromEvent3; readonly fromObservable: (observable: Observable) => Kind3; readonly createAdapter: () => Adapter3; readonly subscribe: (fa: Kind3, observer: Observer) => Subscription; }