/**
 * Flowtype definitions for Observable
 * Generated by Flowgen from a Typescript Definition
 * Flowgen v1.14.1
 */

import { Fn } from "./model";
declare export var generateUuidV4: () => string;
declare export class Observable<T> {
  constructor(id?: string): this;
  getId(): string;
  subscribe(): Observer;
  registerObserver(o: Observer): void;
  unregisterObserver(o: Observer): void;
  unregisterObservers(): void;
  emit(data?: any): void;
  error(message: string): void;
  finally(): void;
}
declare export class Observer {
  constructor(observable: Observable<any>): this;
  getId(): string;
  unsubscribe(): void;
  emit(x: {
    type: string,
    data: any,
    ...
  }): void;
  then(onData: Fn): Observer;
  error(onError: Fn): Observer;
  finally(onFinal: Fn): Observer;
}
