import { Dispatcher } from "./_dispatcher" import * as Sym from "./_symbols" export interface HKT { [Sym.HKT]: SelfType } export abstract class Observable implements HKT> { public [Sym.HKT]!: Observable public [Sym.DISPATCHER]: Dispatcher constructor(d: Dispatcher) { this[Sym.DISPATCHER] = d } public [Sym.observable]() { throw new Error("Not implemented") } } export function dispatcherOf(obs: Observable): Dispatcher { return obs[Sym.DISPATCHER] }