import { Logger } from './utils/logger.js'; import { Dictionary } from './dict.js'; export type GetterFunction = ((object: T) => any) & { getterFromString?: string; }; export type Getter = GetterFunction | keyof T; export type LookupRefFunction = ((object: LookupValue) => LookupValue | null | undefined) & { getterFromString?: string; }; export type LookupValue = T | string | number; export type MarkerConfigGetterKeys = 'ref' | 'title'; export type MarkerConfigArrayGetter = 'refs' | 'lookupRefs'; export type ObjectMarkerConfig = Partial<{ annotateScalars: boolean; refs: Getter[]; lookupRefs: LookupRefFunction[]; page: string; ref: Getter; title: Getter; }>; export type NormalizedObjectMarkerConfig = { name: string; indexRefs: GetterFunction[]; lookupRefs: LookupRefFunction[]; annotateScalars: boolean; page: string | null; getRef: GetterFunction | null; getTitle: GetterFunction; }; export type ObjectMarkerDescriptor = { type: string; object: T; ref: any; title: string; href: string | null; }; export type ObjectMarker = { name: string; page: string | null; mark(value: T): void; lookup(value: unknown, useAnnotateScalars?: boolean): ObjectMarkerDescriptor | null; reset(): void; }; export declare class ObjectMarkerManager extends Dictionary> { #private; private logger; constructor(logger: Logger); lock(): void; define(name: string, config: ObjectMarkerConfig): Readonly>; reset(): void; markerMap(): { [k: string]: (value: object) => void; }; lookup(value: unknown, marker?: string): ObjectMarkerDescriptor | null; lookupAll(value: unknown): ObjectMarkerDescriptor[]; }