import type { HTMLNodeVisitor } from "./types.js";
export type { HTMLNodeVisitor };
/**
* Main converter class that implements the visitor interface to convert HTML to Markdown.
* Uses the Chain of Responsibility pattern for handling different node types.
*/
export declare class MarkdownConverter implements HTMLNodeVisitor {
private handler;
constructor();
/**
* Converts a text node to Markdown, escaping special characters.
*/
visitText(node: Text): string;
/**
* Converts an HTML anchor element to Markdown link syntax.
*/
visitLink(node: HTMLAnchorElement): string;
/**
* Converts an HTML heading element to Markdown heading syntax.
*/
visitHeader(node: HTMLElement, level: number): string;
/**
* Converts an HTML paragraph to Markdown format.
*/
visitParagraph(node: HTMLElement): string;
/**
* Applies Markdown formatting (bold, italic, etc.) to text content.
*/
visitFormatting(node: HTMLElement): string;
/**
* Converts HTML code elements to Markdown inline code syntax.
*/
visitCode(node: HTMLElement): string;
/**
* Handles generic HTML elements by processing their children.
*/
visitGeneric(node: HTMLElement): string;
/**
* Converts an HTML div element to Markdown format, adding a single newline.
*/
visitDiv(node: HTMLElement): string;
/**
* Converts an HTML br element to a newline in Markdown.
*/
visitBr(): string;
/**
* Converts an HTML table row element to Markdown table row format.
*/
visitTableRow(node: HTMLTableRowElement): string;
/**
* Converts an HTML table element to Markdown table format.
*/
visitTable(node: HTMLTableElement): string;
/**
* Converts img tag to Markdown image format
*/
visitImage(node: HTMLImageElement): string;
/**
* Processes a single node using the handler chain.
*/
processNode(node: Node): string;
/**
* Creates and links together handlers in a specific order implementing the Chain of Responsibility pattern.
* @returns The first handler in the chain
*/
private setupHandlerChain;
/**
* Recursively collects and processes text content from a node and its children.
*/
private collectTextContent;
/**
* Collects raw text content from code elements.
*/
private collectCodeContent;
/**
* Processes all child nodes of a given node.
*/
private processChildren;
/**
* Gets the first handler in the chain.
*/
private getHandler;
}