import { BBobCoreTagNodeTree, BBobPluginFunction, BBobPluginOptions } from "./core.js"; import { TagNodeObject } from "./common.js"; export type PartialRecord = Partial> export type PresetTagsDefinition< Key extends string = string, TagValue extends any = any > = Record>> export type PresetOptions = Record export type ProcessorFunction = ( tags: Tags, tree: BBobCoreTagNodeTree, core: BBobPluginOptions, options: Options ) => BBobCoreTagNodeTree export type ProcessorReturnType = ReturnType; export interface PresetTagFunction { ( node: Node, data: BBobPluginOptions, options: Options ): Node } export interface PresetExtendCallback { (defTags: Tags, options?: Options): NewTags } export interface PresetExecutor extends BBobPluginFunction { (tree: BBobCoreTagNodeTree, core?: BBobPluginOptions): BBobCoreTagNodeTree; options: Options; } export interface PresetFactory< Tags extends PresetTagsDefinition = PresetTagsDefinition, RootOptions extends PresetOptions = PresetOptions, > { (opts?: Options): PresetExecutor; options?: RootOptions; extend: ( cb: PresetExtendCallback ) => PresetFactory; }