import { AccessibilityProps, TokenContract } from '../shared/index.js';

interface ComponentDef {
    type: string;
    pattern: RegExp;
    props: Record<string, string>;
}
interface MarkdownRendererProps {
    content: string;
    components?: Record<string, ComponentDef>;
    linkResolver?: (url: string) => string;
}
interface MarkdownRendererAPI {
    /** Rendered HTML string */
    html: string;
    /** Extracted component slots from custom component definitions */
    components: Array<{
        name: string;
        props: Record<string, string>;
    }>;
    /** ARIA attributes for the rendered content container */
    ariaProps: Partial<AccessibilityProps>;
}
/**
 * Create a headless markdown renderer.
 *
 * Uses the headless pattern — returns an API object with rendered HTML,
 * extracted component slots, and ARIA props for the container.
 */
declare function createMarkdownRenderer(props: MarkdownRendererProps): MarkdownRendererAPI;

declare const markdownRendererTokens: TokenContract;
declare const proseVariants: (props?: ({
    size?: "sm" | "default" | "lg" | undefined;
    theme?: "light" | "dark" | undefined;
} & {
    className?: string;
}) | undefined) => string;

export { type ComponentDef, type MarkdownRendererAPI, type MarkdownRendererProps, createMarkdownRenderer, markdownRendererTokens, proseVariants };
