import { TagTree } from 'tag-tree'; export type Selector = | string | { $filter: (el: HTMLElement) => boolean } | { $map: (el: HTMLElement) => null | undefined | HTMLElement } | { $watch: { attributeFilter: string[]; cond: string | ((el: HTMLElement) => boolean); }; } | { $or: Array> } | { $log: string }; export interface Watcher { sources: Array; tag: string; selectors: Array; } export interface Finder { fn(root: HTMLElement): Array | NodeListOf; interval?: | null | undefined | number | ((elementCount: number, timeRunning: number) => number); } export interface TagOptions { ownedBy?: null | undefined | ReadonlyArray; } export interface PageParserTreeOptions { logError?: | null | undefined | ((err: Error, el: undefined | HTMLElement) => void); tags: { [tag: string]: TagOptions }; watchers: ReadonlyArray; finders: { [tag: string]: Finder }; } export default class PageParserTree { tree: TagTree; constructor(root: Document | HTMLElement, options: PageParserTreeOptions); dump(): void; // Intended for use with hot module replacement. replaceOptions(options: PageParserTreeOptions): void; }