import { events } from "./util.js"; export type ProcessEvent = string | { type: string; [key: string]: any; }; export type Process = IterableIterator | ProcessEvent>; export interface ProcessorOptions { logLevel: "error" | "warn" | "info" | "debug" | "trace"; pluginsUri: string | null; } export interface ProcessorEvents { 'process-start': { processor: Processor; }; 'process-end': { processor: Processor; }; 'error': { error: Error; }; } export declare abstract class Processor extends events.EventEmitter { static defaultOptions: ProcessorOptions; options: Options; protected _process: Process; protected _pluginsToLoad: Promise[]; protected constructor(options?: Partial); protected _ended: Promise; get ended(): Promise; use(pluginName: string, useOptions?: object): this; start(): this; emitError(error: Error): void; protected _start(): Promise; } export interface Plugin { (processor: Processor, options: Options, ...args: any[]): any; } export type PluginEntry = { initializer: Plugin; defaultOptions: Options; scriptOptions: Options; script?: HTMLScriptElement; }; export type PluginRegistry = { [pluginName: string]: PluginEntry; }; export declare const pluginRegistry: PluginRegistry;