--- /dev/null
+import { SubscriptionLike, TeardownLogic } from './types';
+/**
+ * Represents a disposable resource, such as the execution of an Observable. A
+ * Subscription has one important method, `unsubscribe`, that takes no argument
+ * and just disposes the resource held by the subscription.
+ *
+ * Additionally, subscriptions may be grouped together through the `add()`
+ * method, which will attach a child Subscription to the current Subscription.
+ * When a Subscription is unsubscribed, all its children (and its grandchildren)
+ * will be unsubscribed as well.
+ *
+ * @class Subscription
+ */
+export declare class Subscription implements SubscriptionLike {
+ /** @nocollapse */
+ static EMPTY: Subscription;
+ /**
+ * A flag to indicate whether this Subscription has already been unsubscribed.
+ * @type {boolean}
+ */
+ closed: boolean;
+ /** @internal */
+ protected _parentOrParents: Subscription | Subscription[];
+ /** @internal */
+ private _subscriptions;
+ /**
+ * @param {function(): void} [unsubscribe] A function describing how to
+ * perform the disposal of resources when the `unsubscribe` method is called.
+ */
+ constructor(unsubscribe?: () => void);
+ /**
+ * Disposes the resources held by the subscription. May, for instance, cancel
+ * an ongoing Observable execution or cancel any other type of work that
+ * started when the Subscription was created.
+ * @return {void}
+ */
+ unsubscribe(): void;
+ /**
+ * Adds a tear down to be called during the unsubscribe() of this
+ * Subscription. Can also be used to add a child subscription.
+ *
+ * If the tear down being added is a subscription that is already
+ * unsubscribed, is the same reference `add` is being called on, or is
+ * `Subscription.EMPTY`, it will not be added.
+ *
+ * If this subscription is already in an `closed` state, the passed
+ * tear down logic will be executed immediately.
+ *
+ * When a parent subscription is unsubscribed, any child subscriptions that were added to it are also unsubscribed.
+ *
+ * @param {TeardownLogic} teardown The additional logic to execute on
+ * teardown.
+ * @return {Subscription} Returns the Subscription used or created to be
+ * added to the inner subscriptions list. This Subscription can be used with
+ * `remove()` to remove the passed teardown logic from the inner subscriptions
+ * list.
+ */
+ add(teardown: TeardownLogic): Subscription;
+ /**
+ * Removes a Subscription from the internal list of subscriptions that will
+ * unsubscribe during the unsubscribe process of this Subscription.
+ * @param {Subscription} subscription The subscription to remove.
+ * @return {void}
+ */
+ remove(subscription: Subscription): void;
+}