import * as React from "react"; /** Props passed to a custom fenced-code renderer by a rich Markdown extension. */ export interface CodeBlockProps { /** Fence language identifier, or `undefined` for an unlabelled fence. */ language: string | undefined; /** Fence source with meaningful leading and trailing whitespace preserved. */ code: string; /** Always `false`; retained for renderer compatibility. */ inline?: boolean; } /** * Common props available to injected element overrides. * * Rich-renderer extensions may add parser-specific fields at runtime. Core * deliberately models only framework-neutral React/HTML fields. */ export interface MarkdownElementRendererProps { children?: React.ReactNode; className?: string; href?: string; style?: React.CSSProperties; [key: string]: unknown; } /** Framework-neutral element overrides consumed only by an injected renderer. */ export type MarkdownComponents = Readonly>>; /** Backward-compatible type name without a react-markdown dependency. */ export type Components = MarkdownComponents; /** Input contract implemented by a trusted rich-Markdown extension. */ export interface MarkdownRendererProps { /** Unmodified Markdown source. */ source: string; /** Optional framework-neutral element overrides. */ components?: MarkdownComponents; /** Optional fenced-code override. */ renderCodeBlock?: (props: CodeBlockProps) => React.ReactNode; } /** A trusted rich-Markdown renderer supplied by an extension or application. */ export type MarkdownRenderer = React.ComponentType; /** Props accepted by {@link MarkdownRendererProvider}. */ export interface MarkdownRendererProviderProps { /** Renderer to install, or `null` to disable an inherited renderer. */ renderer: MarkdownRenderer | null; children: React.ReactNode; } /** Raised when parser-specific options would otherwise be silently ignored. */ export declare class MarkdownRendererCapabilityError extends Error { readonly name = "MarkdownRendererCapabilityError"; readonly code = "VF_REACT_MARKDOWN_RENDERER_REQUIRED"; constructor(); } /** * Read the renderer installed for this subtree. * * Returns the renderer, `null` when a provider explicitly disabled rendering, * and `undefined` when no provider is present at all. Internal: chat uses the * distinction to tell a missing renderer apart from a deliberate plain surface. * Not part of the `veryfront/chat` public surface. */ export declare function useInstalledMarkdownRenderer(): MarkdownRenderer | null | undefined; /** Provide a trusted rich-Markdown renderer to a React subtree. */ export declare function MarkdownRendererProvider({ renderer, children, }: MarkdownRendererProviderProps): React.ReactElement; /** Props accepted by {@link Markdown}. */ export interface MarkdownProps { /** Markdown source to present. */ children: string; /** Additional class name for the outer container. */ className?: string; /** Per-instance renderer; `null` explicitly selects plain source. */ renderer?: MarkdownRenderer | null; /** Forwarded only to an injected rich renderer. */ renderCodeBlock?: (props: CodeBlockProps) => React.ReactNode; /** Forwarded only to an injected rich renderer. */ components?: MarkdownComponents; } /** * Present Markdown source using an injected rich renderer or the explicit * dependency-free plain-source contract. */ export declare function Markdown({ children, className, renderer, renderCodeBlock, components, ...unsupportedProps }: MarkdownProps): React.ReactElement; //# sourceMappingURL=markdown.d.ts.map