/** * An object that is disposable. */ export interface Disposable { /** * A function called on the object when it is disposed. */ dispose(): void; } export declare type ActionOrDisposable = MsftSme.Action | Disposable; export interface RegisterForDisposeFunction { (disposables: ActionOrDisposable[]): LifetimeManagerBase; (disposable: ActionOrDisposable): LifetimeManagerBase; } /** * An object that can limit the lifetime of other objects. When a LifetimeManager object * is disposed, it will dispose all other objects that were registered for disposal. */ export interface LifetimeManagerBase { /** * Registers an object to be disposed. It will throw if the object doesn't have dispose method. * * @param disposable An object to be disposed once the LifetimeManager object itself is disposed. */ registerForDispose: RegisterForDisposeFunction; } export interface LifetimeManager extends LifetimeManagerBase { /** * Create a createChildLifetime to localize the LifetimeManager. * It will provide the function on tracking who create it and when it dispose, * it will remove itself from Container's lifetimeManager */ createChildLifetime(): DisposableLifetimeManager; } export interface DisposableLifetimeManager extends Disposable, LifetimeManager { /** * A value indicating whether or not the lifetime is disposed. */ isDisposed(): boolean; } /** * An object that tracks and invokes disposal callbacks. This can be used * in other classes that wish to implement LifetimeManager. */ export declare class TriggerableLifetimeManager implements DisposableLifetimeManager { private disposables; private isDisposedInternal; private isDisposing; private container; private children; /** * Gets a value indicating whether or not the lifetime is disposed. */ isDisposed(): boolean; /** * See interface. */ registerForDispose(disposable: any): TriggerableLifetimeManager; /** * See interface. */ createChildLifetime(): DisposableLifetimeManager; /** * Causes the instance to regard itself as disposed, and to trigger any * callbacks that were already registered. */ dispose(): void; private unregisterChildForDispose; private isRegistered; private registerForDisposeInternal; } /** * Auto disposer class used with lifetime manager. */ export declare class Disposer implements Disposable { private callback; /** * Initializes a new instance of the Disposer class. * * @param callback the callback function. */ constructor(callback: () => void); /** * dispose function called when lifetime is gone. */ dispose(): void; }