import { BaseCodeOptions, DiffsHighlighter, FileContents, FileHeaderRenderMode, LineAnnotation, RenderFileOptions, RenderRange, ThemedFileResult } from "../types.js";
import { WorkerPoolManager } from "../worker/WorkerPoolManager.js";
import "../worker/index.js";
import { Element, ElementContent } from "hast";

//#region src/renderers/FileRenderer.d.ts
interface FileRenderResult {
  gutterAST: ElementContent[];
  contentAST: ElementContent[];
  preAST: Element;
  headerAST: Element | undefined;
  css: string;
  totalLines: number;
  themeStyles: string;
  baseThemeType: 'light' | 'dark' | undefined;
  rowCount: number;
  bufferBefore: number;
  bufferAfter: number;
}
interface FileRendererOptions extends BaseCodeOptions {
  headerRenderMode?: FileHeaderRenderMode;
}
declare class FileRenderer<LAnnotation = undefined> {
  options: FileRendererOptions;
  private onRenderUpdate?;
  private workerManager?;
  readonly __id: string;
  private highlighter;
  private renderCache;
  private computedLang;
  private lineAnnotations;
  private lineCache;
  constructor(options?: FileRendererOptions, onRenderUpdate?: (() => unknown) | undefined, workerManager?: WorkerPoolManager | undefined);
  setOptions(options: FileRendererOptions): void;
  mergeOptions(options: Partial<FileRendererOptions>): void;
  setLineAnnotations(lineAnnotations: LineAnnotation<LAnnotation>[]): void;
  cleanUp(): void;
  hydrate(file: FileContents): void;
  private getRenderOptions;
  getOrCreateLineCache(file: FileContents): string[];
  renderFile(file?: FileContents | undefined, renderRange?: RenderRange): FileRenderResult | undefined;
  asyncRender(file: FileContents, renderRange?: RenderRange): Promise<FileRenderResult>;
  private asyncHighlight;
  private renderFileWithHighlighter;
  private processFileResult;
  private renderHeader;
  renderFullHTML(result: FileRenderResult): string;
  renderFullAST(result: FileRenderResult, children?: ElementContent[]): Element;
  renderCodeAST(result: FileRenderResult): ElementContent[];
  renderPartialHTML(children: ElementContent[], includeCodeNode?: boolean): string;
  initializeHighlighter(): Promise<DiffsHighlighter>;
  onHighlightSuccess(file: FileContents, result: ThemedFileResult, options: RenderFileOptions): void;
  onHighlightError(error: unknown): void;
  private createPreElement;
}
//#endregion
export { FileRenderResult, FileRenderer, FileRendererOptions };
//# sourceMappingURL=FileRenderer.d.ts.map