import { ArrayObserver } from './array-observer'; import { ComputedGetterFn } from './computed-observer'; import { MapObserver } from './map-observer'; import { SetObserver } from './set-observer'; import type { Collection, IAccessor, ICollectionObserver, IObserver, AccessorOrObserver, CollectionObserver } from './interfaces'; import { type ComputedPropertyInfo } from './object-property-info'; export interface IObjectObservationAdapter { getObserver(object: unknown, key: PropertyKey, descriptor: PropertyDescriptor, requestor: IObserverLocator): IObserver | null; } export interface IObserverLocator extends ObserverLocator { } export declare const IObserverLocator: import("@aurelia/kernel").InterfaceSymbol; export interface INodeObserverLocator { handles(obj: unknown, key: PropertyKey, requestor: IObserverLocator): boolean; getObserver(obj: object, key: PropertyKey, requestor: IObserverLocator): IAccessor | IObserver; getAccessor(obj: object, key: PropertyKey, requestor: IObserverLocator): IAccessor | IObserver; } export declare const INodeObserverLocator: import("@aurelia/kernel").InterfaceSymbol; export type ExtendedPropertyDescriptor = PropertyDescriptor & { get?: ObservableGetter; }; export type ObservableGetter = PropertyDescriptor['get'] & { getObserver?(obj: unknown, requestor: IObserverLocator): IObserver; }; export declare class ObserverLocator { addAdapter(adapter: IObjectObservationAdapter): void; getObserver(obj: unknown, key: PropertyKey): IObserver; getObserver(obj: T, key: ComputedGetterFn): IObserver; getAccessor(obj: object, key: PropertyKey): AccessorOrObserver; getExpressionObserver(obj: object, expression: string): IObserver; getComputedObserver(obj: object, key: PropertyKey, pd: ExtendedPropertyDescriptor, info?: ComputedPropertyInfo): IObserver; getArrayObserver(observedArray: unknown[]): ICollectionObserver<'array'>; getMapObserver(observedMap: Map): ICollectionObserver<'map'>; getSetObserver(observedSet: Set): ICollectionObserver<'set'>; private createObserver; } export type RepeatableCollection = Collection | null | undefined | number; export declare const getCollectionObserver: { (array: unknown[]): ArrayObserver; (map: Map): MapObserver; (set: Set): SetObserver; (collection: RepeatableCollection): CollectionObserver | undefined; }; //# sourceMappingURL=observer-locator.d.ts.map