import { DisposableStore } from '../../../base/common/lifecycle'; import { IReader, IObservable, BaseObservable, IObserver, IChangeContext, DebugNameFn } from '../../../base/common/observableInternal/base'; export type EqualityComparer = (a: T, b: T) => boolean; /** * Creates an observable that is derived from other observables. */ export declare function derived(computeFn: (reader: IReader) => T): IObservable; export declare function derived(owner: object, computeFn: (reader: IReader) => T): IObservable; export declare function derivedOpts(options: { owner?: object; debugName?: string | (() => string | undefined); equalityComparer?: EqualityComparer; }, computeFn: (reader: IReader) => T): IObservable; export declare function derivedHandleChanges(options: { owner?: object; debugName?: string | (() => string); createEmptyChangeSummary: () => TChangeSummary; handleChange: (context: IChangeContext, changeSummary: TChangeSummary) => boolean; equalityComparer?: EqualityComparer; }, computeFn: (reader: IReader, changeSummary: TChangeSummary) => T): IObservable; export declare function derivedWithStore(computeFn: (reader: IReader, store: DisposableStore) => T): IObservable; export declare function derivedWithStore(owner: object, computeFn: (reader: IReader, store: DisposableStore) => T): IObservable; export declare class Derived extends BaseObservable implements IReader, IObserver { private readonly _owner; private readonly _debugName; readonly _computeFn: (reader: IReader, changeSummary: TChangeSummary) => T; private readonly createChangeSummary; private readonly _handleChange; private readonly _handleLastObserverRemoved; private readonly _equalityComparator; private state; private value; private updateCount; private dependencies; private dependenciesToBeRemoved; private changeSummary; get debugName(): string; constructor(_owner: object | undefined, _debugName: DebugNameFn | undefined, _computeFn: (reader: IReader, changeSummary: TChangeSummary) => T, createChangeSummary: (() => TChangeSummary) | undefined, _handleChange: ((context: IChangeContext, summary: TChangeSummary) => boolean) | undefined, _handleLastObserverRemoved: (() => void) | undefined, _equalityComparator: EqualityComparer); protected onLastObserverRemoved(): void; get(): T; private _recomputeIfNeeded; toString(): string; beginUpdate(_observable: IObservable): void; endUpdate(_observable: IObservable): void; handlePossibleChange(observable: IObservable): void; handleChange(observable: IObservable, change: TChange): void; readObservable(observable: IObservable): T; addObserver(observer: IObserver): void; removeObserver(observer: IObserver): void; }