import { Renderable, Value } from '@tempots/dom';
import type { InputOptions } from '../form/input/input-options';
import { Merge } from '@tempots/std';
/**
 * Markdown features that can be enabled/disabled in the editor
 */
export interface MarkdownFeatures {
    /** Enable heading nodes (h1-h6) */
    headings: boolean;
    /** Enable bold text */
    bold: boolean;
    /** Enable italic text */
    italic: boolean;
    /** Enable code inline */
    code: boolean;
    /** Enable links */
    links: boolean;
    /** Enable bullet lists */
    bulletList: boolean;
    /** Enable ordered lists */
    orderedList: boolean;
    /** Enable blockquotes */
    blockquote: boolean;
    /** Enable code blocks */
    codeBlock: boolean;
    /** Enable horizontal rules */
    horizontalRule: boolean;
    /** Enable hard breaks */
    hardBreak: boolean;
    /** Maximum heading level */
    headerLevels: number;
}
/**
 * Options for the ProseMirror Markdown editor
 */
export type ProseMirrorMarkdownInputOptions = Merge<InputOptions<string>, {
    /** Show toolbar with formatting buttons */
    showToolbar?: Value<boolean>;
    /** Configure which markdown features are enabled */
    features?: Value<MarkdownFeatures>;
    /** CSS injection strategy */
    cssInjection?: 'link' | 'none';
    /** Read-only mode */
    readOnly?: Value<boolean>;
    /** Preserve line breaks in markdown (converts single newlines to hard breaks). Default: false */
    preserveLineBreaks?: boolean;
}>;
/**
 * Default markdown features - all enabled
 */
export declare const DEFAULT_FEATURES: MarkdownFeatures;
/**
 * ProseMirrorMarkdownInput - A markdown editor built on ProseMirror
 *
 * Features:
 * - Base markdown support (configurable)
 * - Optional toolbar for formatting
 * - Reactive value binding
 * - Theme-aware (light/dark mode)
 * - Accessible keyboard shortcuts
 *
 * @example
 * ```ts
 * const markdown = prop('# Hello World')
 *
 * ProseMirrorMarkdownInput({
 *   value: markdown,
 *   onInput: v => markdown.set(v),  // Called on every document change
 *   onChange: v => console.log('Saved:', v),  // Called when editor loses focus
 *   showToolbar: true,
 *   features: {
 *     headings: true,
 *     bold: true,
 *     italic: true,
 *   }
 * })
 * ```
 */
export declare const ProseMirrorMarkdownInput: (options: ProseMirrorMarkdownInputOptions) => Renderable;
