import type MarkdownIt from 'markdown-it'; import { inputRules } from 'prosemirror-inputrules'; import type { MarkSpec, NodeSpec } from 'prosemirror-model'; import type { Plugin } from 'prosemirror-state'; import type { Logger2 } from "../logger.js"; import type { ActionSpec } from "./types/actions.js"; import type { Extension, ExtensionDeps, ExtensionMarkSpec, ExtensionNodeSpec, ExtensionSpec, ExtensionWithOptions } from "./types/extension.js"; import type { Keymap } from "./types/keymap.js"; import type { ParserToken } from "./types/parser.js"; import type { SerializerMarkToken, SerializerNodeToken } from "./types/serializer.js"; type InputRulesConfig = Parameters[0]; type ConfigureMdParams = { /** * Apply this configurtion to text parser * @default true */ text?: boolean; /** * Apply this configurtion to markup parser * @default true */ markup?: boolean; }; type ConfigureMdCallback = (md: MarkdownIt) => MarkdownIt; type AddPmNodeCallback = () => ExtensionNodeSpec; type AddPmMarkCallback = () => ExtensionMarkSpec; type AddPmPluginCallback = (deps: ExtensionDeps) => Plugin | Plugin[]; type AddPmKeymapCallback = (deps: ExtensionDeps) => Keymap; type AddPmInputRulesCallback = (deps: ExtensionDeps) => InputRulesConfig; type AddActionCallback = (deps: ExtensionDeps) => ActionSpec; declare enum Priority { Highest = 1000000, VeryHigh = 100000, High = 10000, Medium = 1000, Low = 100, VeryLow = 10, Lowest = 0 } type BuilderContext = { has(key: keyof T): boolean; get(key: K): T[K] | undefined; set(key: K, value: T[K]): BuilderContext; }; declare global { namespace WysiwygEditor { interface Context { } } } export declare class ExtensionBuilder { #private; static createContext(): BuilderContext; static readonly Priority: typeof Priority; readonly Priority: typeof Priority; readonly context: BuilderContext; constructor(logger: Logger2.ILogger, context?: BuilderContext); get logger(): Logger2.ILogger; use(extension: Extension): this; use(extension: ExtensionWithOptions, options: T): this; configureMd(cb: ConfigureMdCallback, params?: ConfigureMdParams): this; /** * @deprecated Will be removed in the next major version. * Use addNodeSpec() + addMarkdownTokenParserSpec() + addNodeSerializerSpec() instead. */ addNode(name: string, cb: AddPmNodeCallback): this; /** * @deprecated Will be removed in the next major version. * Use addMarkSpec() + addMarkdownTokenParserSpec() + addMarkSerializerSpec() instead. */ addMark(name: string, cb: AddPmMarkCallback, priority?: Priority): this; addPlugin(cb: AddPmPluginCallback, priority?: Priority): this; addKeymap(cb: AddPmKeymapCallback, priority?: Priority): this; addInputRules(cb: AddPmInputRulesCallback, priority?: Priority): this; addAction(name: string, cb: AddActionCallback): this; addNodeSpec(name: string, cb: () => NodeSpec): this; addMarkSpec(name: string, cb: () => MarkSpec, priority?: Priority): this; addMarkdownTokenParserSpec(tokenName: string, cb: () => ParserToken): this; addNodeSerializerSpec(name: string, cb: () => SerializerNodeToken): this; addMarkSerializerSpec(name: string, cb: () => SerializerMarkToken): this; overrideNodeSpec(name: string, cb: (prev: NodeSpec) => NodeSpec): this; overrideMarkSpec(name: string, cb: (prev: MarkSpec) => MarkSpec): this; overrideMarkdownTokenParserSpec(tokenName: string, cb: (prev: ParserToken) => ParserToken): this; overrideNodeSerializerSpec(name: string, cb: (prev: SerializerNodeToken) => SerializerNodeToken): this; overrideMarkSerializerSpec(name: string, cb: (prev: SerializerMarkToken) => SerializerMarkToken): this; build(): ExtensionSpec; } export {};