import { BaseCodeOptions, FileContents, LineAnnotation, RenderFileMetadata, ThemeTypes } from "./types.js";
import { WorkerPoolManager } from "./worker/WorkerPoolManager.js";
import "./worker/index.js";
import { LineSelectionOptions, SelectedLineRange } from "./LineSelectionManager.js";
import { GetHoveredLineResult, MouseEventManagerBaseOptions } from "./MouseEventManager.js";

//#region src/File.d.ts
interface FileRenderProps<LAnnotation> {
  file: FileContents;
  fileContainer?: HTMLElement;
  containerWrapper?: HTMLElement;
  forceRender?: boolean;
  lineAnnotations?: LineAnnotation<LAnnotation>[];
}
interface FileHyrdateProps<LAnnotation> extends Omit<FileRenderProps<LAnnotation>, "fileContainer"> {
  fileContainer: HTMLElement;
  prerenderedHTML?: string;
}
interface FileOptions<LAnnotation> extends BaseCodeOptions, MouseEventManagerBaseOptions<"file">, LineSelectionOptions {
  disableFileHeader?: boolean;
  renderCustomMetadata?: RenderFileMetadata;
  renderAnnotation?(annotation: LineAnnotation<LAnnotation>): HTMLElement | undefined;
  renderHoverUtility?(getHoveredRow: () => GetHoveredLineResult<"file"> | undefined): HTMLElement | null;
}
declare class File<LAnnotation = undefined> {
  options: FileOptions<LAnnotation>;
  private workerManager?;
  private isContainerManaged;
  static LoadedCustomComponent: boolean;
  readonly __id: number;
  private fileContainer;
  private spriteSVG;
  private pre;
  private code;
  private unsafeCSSStyle;
  private hoverContent;
  private errorWrapper;
  private headerElement;
  private headerMetadata;
  private fileRenderer;
  private resizeManager;
  private mouseEventManager;
  private lineSelectionManager;
  private annotationElements;
  private lineAnnotations;
  private file;
  constructor(options?: FileOptions<LAnnotation>, workerManager?: WorkerPoolManager | undefined, isContainerManaged?: boolean);
  private handleHighlightRender;
  rerender(): void;
  setOptions(options: FileOptions<LAnnotation> | undefined): void;
  private mergeOptions;
  setThemeType(themeType: ThemeTypes): void;
  getHoveredLine: () => GetHoveredLineResult<"file"> | undefined;
  setLineAnnotations(lineAnnotations: LineAnnotation<LAnnotation>[]): void;
  setSelectedLines(range: SelectedLineRange | null): void;
  cleanUp(): void;
  hydrate(props: FileHyrdateProps<LAnnotation>): void;
  render({
    file,
    fileContainer,
    forceRender,
    containerWrapper,
    lineAnnotations
  }: FileRenderProps<LAnnotation>): void;
  private renderAnnotations;
  private renderHoverUtility;
  private injectUnsafeCSS;
  private applyHunksToDOM;
  private applyHeaderToDOM;
  private getOrCreateFileContainerNode;
  private getOrCreatePreNode;
  private applyPreNodeAttributes;
  private applyErrorToDOM;
  private cleanupErrorWrapper;
}
//#endregion
export { File, FileHyrdateProps, FileOptions, FileRenderProps };
//# sourceMappingURL=File.d.ts.map