import type { NodeProcessorConfig } from '../html/NodeProcessor.js';
import { NodeOrText } from '../utils/node.js';
import '../patches/htmlparser2.js';
export type PluginContext = Record;
export type FrontMatter = Record;
type TagConfigAttributes = {
name: string;
isRelative: boolean;
isSourceFile: boolean;
};
export type TagConfigs = {
isSpecial?: boolean;
attributes?: TagConfigAttributes[];
isCustomElement?: boolean;
};
/**
* Wrapper class around a loaded plugin module
*/
export declare class Plugin {
pluginName: string;
plugin: {
beforeSiteGenerate: (...args: any[]) => any;
getLinks: (pluginContext?: PluginContext, frontmatter?: FrontMatter, content?: string) => string[];
getScripts: (pluginContext?: PluginContext, frontmatter?: FrontMatter, content?: string) => string[];
postRender: (pluginContext: PluginContext, frontmatter: FrontMatter, content: string) => string;
processNode: (pluginContext: PluginContext, node: NodeOrText, config?: NodeProcessorConfig) => string;
postProcessNode: (pluginContext: PluginContext, node: NodeOrText, config?: NodeProcessorConfig) => string;
tagConfig: Record;
};
pluginOptions: PluginContext;
pluginAbsolutePath: string;
pluginAssetOutputPath: string;
constructor(pluginName: string, pluginPath: string, pluginOptions: PluginContext, siteOutputPath: string);
executeBeforeSiteGenerate(): void;
/**
* Resolves a resource specified as an attribute in a html asset tag
* (eg. '