import type { ObjectMarker, ObjectMarkerConfig, ObjectMarkerDescriptor } from '../core/object-marker.js'; import type { Dataset, Encoding, LoadDataBaseOptions, LoadDataFetchOptions, LoadDataResult } from '../core/utils/load-data.js'; import type { ConsoleLike, LogLevel } from '../core/utils/logger.js'; import { TextViewRenderer } from '../core/text-view.js'; import { Emitter } from '../core/emitter.js'; import { ActionManager } from '../core/action.js'; import { ObjectMarkerManager } from '../core/object-marker.js'; import { Logger } from '../core/utils/logger.js'; export type LogOptions = { level: LogLevel; lazy?: () => any[]; message?: string; collapsed?: null | Iterable | (() => Iterable); }; export type ExtensionFunction = (host: T) => void; export type ExtensionArray = Extension[]; export type ExtensionObject = { [key: string]: Extension; }; export type Extension = ExtensionFunction | ExtensionArray | ExtensionObject; export type PageId = string; export type PageRef = string | number | null; export type PageParams = Record | [key: string, value?: unknown][] | string; export type PageAnchor = string | null; export type PageHashStateWithAnchor = PageHashState & { anchor: PageAnchor; }; export type PageHashState = { id: PageId; ref: PageRef; params: PageParams; }; export type LinkResolver = (value: unknown) => null | ResolvedLink; export type ResolvedLink = { type: string; text: string; href: string | null; entity: object; }; export type Query = string | QueryFunction; export type QueryFunction = ((data: unknown, context: unknown) => unknown) & { query?: string; }; export type QueryFromStringOptions = { tolerant?: boolean; stat?: boolean; }; export type RawDataDataset = { data: any; }; export type ModelDataset = Dataset | RawDataDataset; export type GetDecodeParams = (pageId: string) => (entries: [string, any][]) => object; export interface SetDataOptions { setPrepareWorkTitle?: (title: string) => Promise; dataset?: Dataset; } export type SetupMethods = { setPrepare(fn: PrepareFunction): void; defineObjectMarker(name: string, options: ObjectMarkerConfig): ObjectMarker['mark']; /** @deprecated use addQueryMethods() instead */ addQueryHelpers(methods: SetupQueryMethodsExtension): void; addQueryMethods(methods: SetupQueryMethodsExtension): void; addQueryAssertions(assertions: SetupQueryMethodsExtension): void; }; export type SetupQueryMethodsExtension = { [key: string]: string | ((...args: unknown[]) => any); }; export type PrepareFunction = (input: any, prepareContext: PrepareContextApi | LegacyPrepareContextApi) => any; export type PrepareContextApiWrapper = { before?(host: Model): void; after?(host: Model): void; contextApi: PrepareContextApi | LegacyPrepareContextApi; }; export interface PrepareContextApi { setWorkTitle: (title: string) => Promise; rejectData: (message: string, extra: any) => void; markers: Record void>; } export interface LegacyPrepareContextApi { setWorkTitle: (title: string) => Promise; rejectData: (message: string, extra: any) => void; defineObjectMarker(name: string, options: ObjectMarkerConfig): ObjectMarker['mark']; lookupObjectMarker(value: any, type?: string): ObjectMarkerDescriptor | null; lookupObjectMarkerAll(value: any): ObjectMarkerDescriptor[]; addValueAnnotation(query: Query, options: object | boolean): void; /** @deprecated use addQueryMethods() instead */ addQueryHelpers(methods: SetupQueryMethodsExtension): void; addQueryMethods(methods: SetupQueryMethodsExtension): void; addQueryAssertions(assertions: SetupQueryMethodsExtension): void; query(query: Query, ...args: unknown[]): any; } export type ModelEvents = { data: []; context: [prevContext: unknown, nextContext: unknown]; unloadData: []; }; export interface ModelOptions { name: string; version: string; description: string; icon: string; logger: ConsoleLike; logLevel: LogLevel; extensions: Extension; encodings: Encoding[]; context: any; setup(api: SetupMethods): void; } type ModelOptionsBind = ModelOptions; export declare class Model extends Emitter { #private; options: Partial; info: { name: string; version: string | null; description: string | null; icon: string | null; }; logger: Logger; action: ActionManager; objectMarkers: ObjectMarkerManager; linkResolvers: LinkResolver[]; encodings: Encoding[]; datasets: ModelDataset[]; data: any; prepare: PrepareFunction; textView: TextViewRenderer; constructor(options?: Partial); apply(extensions?: Extension): void; log(): void; get legacyPrepare(): boolean; setPrepare(fn: PrepareFunction): void; get context(): any; set context(context: unknown); setContext(context: unknown, replace?: boolean): void; getContext(): any; setData(data: unknown, options?: SetDataOptions): Promise; trackLoadDataProgress(loadDataResult: LoadDataResult): Promise; loadDataFromStream(stream: ReadableStream, options?: LoadDataBaseOptions): Promise; loadDataFromEvent(event: DragEvent | ClipboardEvent | InputEvent, options?: LoadDataBaseOptions): Promise; loadDataFromFile(file: File, options?: LoadDataBaseOptions): Promise; loadDataFromUrl(url: string, options?: LoadDataFetchOptions): Promise; unloadData(): void; hasDatasets(): boolean; getQueryEngineInfo(): { name: string; version: any; link: string; }; queryFnFromString(query: string, options?: QueryFromStringOptions): QueryFunction; queryFn(query: Query): QueryFunction; query(query: any, data: unknown, context: unknown): unknown; queryBool(query: any, data: unknown, context: unknown): boolean; querySuggestions(query: string, offset: number, data: unknown, context: unknown): import("./query-suggestions.js").Suggestion[] | null; pathToQuery(path: (string | number)[]): string; stripAnchorFromHash(hash: string): string; encodePageHash(pageId?: string | null, pageRef?: PageRef, pageParams?: PageParams, pageAnchor?: PageAnchor): string; decodePageHash(hash: string, getDecodeParams?: GetDecodeParams): { pageId: string; pageRef: string | null; pageParams: Record; pageAnchor: string | null; }; resolveValueLinks(value: unknown): ResolvedLink[] | null; } export {};