declare interface Subscription {
    // Cancels the subscription
    unsubscribe(): void;
}

declare interface Observer {

    // Sends the next value in the sequence
    next(value: any): void;

    // Sends the sequence error
    error(errorValue: any): void;

    // Sends the sequence completion value
    complete(completeValue: any): void;
}

declare interface SubscriptionObserver {

    // Sends the next value in the sequence
    next(value: any): void;

    // Sends the sequence error
    error(errorValue: any): void;

    // Sends the sequence completion value
    complete(completeValue: any): void;
}

declare function SubscriberFunction(observer: SubscriptionObserver) : Function | Subscription;

declare class Observable {
    constructor(subscriber: SubscriberFunction): void;

    // Subscribes to the sequence
    subscribe(observer: Observer): Subscription;

    // Subscribes to the sequence with a callback, returning a promise
    forEach(onNext: Function): Promise<any>;

    // Converts items to an Observable
    static of(...items: Array<any>): Observable;

    // Converts an observable or iterable to an Observable
    static from(observable: Observable): Observable;
}

@@ -87,39 +87,248 @@
 id;%0A
-%7D%0A%0Adeclare interface Observer %7B
+%0A    // A boolean value indicating whether the subscription is closed%0A    closed: Boolean;%0A%7D%0A%0Adeclare interface Observer %7B%0A%0A    // Receives the subscription object when %60subscribe%60 is called%0A    start?: (subscription: Subscription) =%3E void;
 %0A%0A  
@@ -369,32 +369,35 @@
 equence%0A    next
+?: 
 (value: any): vo
@@ -384,33 +384,35 @@
 t?: (value: any)
-:
+ =%3E
  void;%0A%0A    // S
@@ -436,32 +436,35 @@
  error%0A    error
+?: 
 (errorValue: any
@@ -456,33 +456,35 @@
 errorValue: any)
-:
+ =%3E
  void;%0A%0A    // S
@@ -522,32 +522,35 @@
 lue%0A    complete
+?: 
 (completeValue: 
@@ -545,33 +545,35 @@
 pleteValue: any)
-:
+ =%3E
  void;%0A%7D%0A%0Adeclar
@@ -826,24 +826,115 @@
  any): void;
+%0A%0A    // A boolean value indicating whether the subscription is closed%0A    closed: Boolean;
 %0A%7D%0A%0Adeclare 

update interface for Observable