import { Disposable, DisposableCollection } from './disposable'; import { Emitter, Event } from './event'; import { MaybePromise } from './types'; export interface Reference extends Disposable { readonly object: T; } export declare abstract class AbstractReferenceCollection implements Disposable { protected readonly _keys: Map; protected readonly _values: Map; protected readonly references: Map; protected readonly onDidCreateEmitter: Emitter; readonly onDidCreate: Event; protected readonly onWillDisposeEmitter: Emitter; readonly onWillDispose: Event; protected readonly toDispose: DisposableCollection; constructor(); dispose(): void; clear(): void; has(args: K): boolean; keys(): K[]; values(): V[]; get(args: K): V | undefined; abstract acquire(args: K): MaybePromise>; protected doAcquire(key: string, object: V): Reference; protected toKey(args: K): string; protected createReferences(key: string, value: V): DisposableCollection; } export declare class ReferenceCollection extends AbstractReferenceCollection { protected readonly factory: (key: K) => MaybePromise; constructor(factory: (key: K) => MaybePromise); acquire(args: K): Promise>; protected readonly pendingValues: Map>; protected getOrCreateValue(key: string, args: K): Promise; } export declare class SyncReferenceCollection extends AbstractReferenceCollection { protected readonly factory: (key: K) => V; constructor(factory: (key: K) => V); acquire(args: K): Reference; protected getOrCreateValue(key: string, args: K): V; } //# sourceMappingURL=reference.d.ts.map