import { EqualityComparer } from 'vs/base/common/equals'; import { DisposableStore, IDisposable } from 'vs/base/common/lifecycle'; import { BaseObservable, IChangeContext, IObservable, IObserver, IReader, ISettableObservable, ITransaction } from 'vs/base/common/observableInternal/base'; import { DebugNameData, IDebugNameData, DebugOwner } from 'vs/base/common/observableInternal/debugName'; /** * Creates an observable that is derived from other observables. * The value is only recomputed when absolutely needed. * * {@link computeFn} should start with a JS Doc using `@description` to name the derived. */ export declare function derived(computeFn: (reader: IReader) => T): IObservable; export declare function derived(owner: DebugOwner, computeFn: (reader: IReader) => T): IObservable; export declare function derivedWithSetter(owner: DebugOwner | undefined, computeFn: (reader: IReader) => T, setter: (value: T, transaction: ITransaction | undefined) => void): ISettableObservable; export declare function derivedOpts(options: IDebugNameData & { equalsFn?: EqualityComparer; onLastObserverRemoved?: (() => void); }, computeFn: (reader: IReader) => T): IObservable; /** * Represents an observable that is derived from other observables. * The value is only recomputed when absolutely needed. * * {@link computeFn} should start with a JS Doc using `@description` to name the derived. * * Use `createEmptyChangeSummary` to create a "change summary" that can collect the changes. * Use `handleChange` to add a reported change to the change summary. * The compute function is given the last change summary. * The change summary is discarded after the compute function was called. * * @see derived */ export declare function derivedHandleChanges(options: IDebugNameData & { 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 function derivedDisposable(computeFn: (reader: IReader) => T): IObservable; export declare function derivedDisposable(owner: DebugOwner, computeFn: (reader: IReader) => T): IObservable; export declare class Derived extends BaseObservable implements IReader, IObserver { readonly _debugNameData: DebugNameData; 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(_debugNameData: DebugNameData, _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; } export declare class DerivedWithSetter extends Derived implements ISettableObservable { readonly set: (value: T, tx: ITransaction | undefined) => void; constructor(debugNameData: DebugNameData, computeFn: (reader: IReader, changeSummary: TChangeSummary) => T, createChangeSummary: (() => TChangeSummary) | undefined, handleChange: ((context: IChangeContext, summary: TChangeSummary) => boolean) | undefined, handleLastObserverRemoved: (() => void) | undefined, equalityComparator: EqualityComparer, set: (value: T, tx: ITransaction | undefined) => void); } //# sourceMappingURL=derived.d.ts.map