import type { AppliedDataSemantic } from '../Semantics.js';
import { SemanticType } from '../Semantics.js';
/**
 * Configuration options for the Markdown semantic.
 * Controls rendering, sanitization, and allowed features.
 */
export interface MarkdownConfig {
    /**
     * List of allowed HTML tags in the rendered output.
     */
    allowedTags?: string[];
    /**
     * Render mode: 'html', 'text', or 'both'.
     * This controls how the stored Markdown content is transformed and returned by the API.
     *
     * - `html` - The API converts the Markdown to HTML and returns the sanitized result.
     * - `text` - The original Markdown as when created, but sanitized.
     * - `both` - The API returns an object containing both the rendered HTML and the plain text version.
     *   This provides maximum flexibility for client applications.
     *   ```json
     *   {
     *     "html": "<h1>Title</h1><p>Some <strong>bold</strong> text.</p>",
     *     "text": "Title Some bold text."
     *   }
     *   ```
     */
    renderMode?: 'html' | 'text' | 'both';
    /**
     * Sanitization level: 'strict', 'moderate', or 'none'.
     */
    sanitizeLevel?: 'strict' | 'moderate' | 'none';
    /**
     * Whether to allow images in markdown.
     */
    allowImages?: boolean;
    /**
     * Whether to allow links in markdown.
     */
    allowLinks?: boolean;
    /**
     * Whether to allow tables in markdown.
     */
    allowTables?: boolean;
    /**
     * Whether to allow raw HTML in markdown.
     */
    allowHtml?: boolean;
    /**
     * Whether to allow footnotes in markdown.
     */
    allowFootnotes?: boolean;
    /**
     * Whether to allow GitHub-style task lists.
     */
    allowTaskLists?: boolean;
    /**
     * Whether to allow strikethrough formatting.
     */
    allowStrikethrough?: boolean;
    /**
     * Whether to allow math expressions (e.g., LaTeX).
     */
    allowMath?: boolean;
    /**
     * Custom metadata for the markdown field.
     */
    metadata?: Record<string, unknown>;
    /**
     * Index signature to allow additional properties.
     */
    [key: string]: unknown;
}
/**
 * Type-safe configuration for Markdown semantic.
 */
export interface AppliedMarkdownSemantic extends AppliedDataSemantic {
    id: SemanticType.Markdown;
    config?: MarkdownConfig;
}
/**
 * Type guard to check if a semantic is a Markdown semantic.
 */
export declare const isMarkdownSemantic: (semantic: AppliedDataSemantic) => semantic is AppliedMarkdownSemantic;
/**
 * Helper function to create a Markdown semantic with configuration.
 */
export declare const createMarkdownSemantic: (config?: MarkdownConfig) => AppliedMarkdownSemantic;
/**
 * Default configuration for Markdown semantic.
 */
export declare const DEFAULT_MARKDOWN_CONFIG: MarkdownConfig;
//# sourceMappingURL=Markdown.d.ts.map