import * as react from "react";
import { ReactElement, ReactNode } from "react";
import { Marked, MarkedOptions, Token } from "marked";

//#region src/ReactRenderer.d.ts
type HeadingLevels = 1 | 2 | 3 | 4 | 5 | 6;
interface TableFlags {
  header?: boolean;
  align?: 'center' | 'left' | 'right' | null;
}
type CustomReactRenderer = Partial<ReactRenderer>;
interface ReactRendererOptions {
  baseURL?: string;
  openLinksInNewTab?: boolean;
  langPrefix?: string;
  renderer?: CustomReactRenderer;
}
declare class ReactRenderer {
  #private;
  elIdList: number[];
  constructor(options?: ReactRendererOptions);
  get elementId(): string;
  heading(children: ReactNode, level: HeadingLevels): ReactElement<unknown, string | react.JSXElementConstructor<any>>;
  paragraph(children: ReactNode): ReactElement<unknown, string | react.JSXElementConstructor<any>>;
  link(href: string, text: ReactNode): ReactElement<unknown, string | react.JSXElementConstructor<any>>;
  image(src: string, alt: string, title?: string | null): ReactElement<unknown, string | react.JSXElementConstructor<any>>;
  codespan(code: ReactNode, lang?: string | null): ReactElement<unknown, string | react.JSXElementConstructor<any>>;
  code(code: ReactNode, lang: string | undefined): ReactElement<unknown, string | react.JSXElementConstructor<any>>;
  blockquote(children: ReactNode): ReactElement<unknown, string | react.JSXElementConstructor<any>>;
  list(children: ReactNode, ordered: boolean, start: number | undefined): ReactElement<unknown, string | react.JSXElementConstructor<any>>;
  listItem(children: ReactNode[]): ReactElement<unknown, string | react.JSXElementConstructor<any>>;
  checkbox(checked: ReactNode): ReactElement<unknown, string | react.JSXElementConstructor<any>>;
  table(children: ReactNode[]): ReactElement<unknown, string | react.JSXElementConstructor<any>>;
  tableHeader(children: ReactNode): ReactElement<unknown, string | react.JSXElementConstructor<any>>;
  tableBody(children: ReactNode[]): ReactElement<unknown, string | react.JSXElementConstructor<any>>;
  tableRow(children: ReactNode[]): ReactElement<unknown, string | react.JSXElementConstructor<any>>;
  tableCell(children: ReactNode[], flags: TableFlags): ReactElement<unknown, string | react.JSXElementConstructor<any>>;
  strong(children: ReactNode): ReactElement<unknown, string | react.JSXElementConstructor<any>>;
  em(children: ReactNode): ReactElement<unknown, string | react.JSXElementConstructor<any>>;
  del(children: ReactNode): ReactElement<unknown, string | react.JSXElementConstructor<any>>;
  text(text: ReactNode): ReactNode;
  html(html: ReactNode): ReactNode;
  hr(): ReactElement<unknown, string | react.JSXElementConstructor<any>>;
  br(): ReactElement<unknown, string | react.JSXElementConstructor<any>>;
}
//#endregion
//#region src/Markdown.d.ts
type LexerOptions = Pick<MarkedOptions, 'breaks' | 'gfm'>;
interface MarkdownProps extends ReactRendererOptions, LexerOptions {
  value?: string;
  children?: string;
  isInline?: boolean;
  instance?: Marked;
}
declare const Markdown: (props: MarkdownProps) => react.FunctionComponentElement<react.FragmentProps>;
//#endregion
//#region src/ReactParser.d.ts
interface ReactParserOptions {
  renderer: ReactRenderer;
}
declare class ReactParser {
  renderer: ReactRenderer;
  constructor(options: ReactParserOptions);
  parse(tokens: Token[]): ReactNode[];
  parseInline(tokens?: Token[]): ReactNode[];
}
//#endregion
export { ReactParser, ReactRenderer, Markdown as default };
//# sourceMappingURL=index.d.cts.map