import type { AppliedDataSemantic } from '../Semantics.js';
import { SemanticType } from '../Semantics.js';
/**
 * Configuration options for the HTML semantic.
 * Controls rendering, sanitization, and allowed HTML features.
 */
export interface HTMLConfig {
    /**
     * List of allowed HTML tags in the content.
     */
    allowedTags?: string[];
    /**
     * Render mode: 'html', 'text', or 'both'.
     *
     * - `html` - The API returns the HTML content as-is (after sanitization based on your other rules like allowedTags).
     * - `text` - The API returns the text content, stripping out all HTML tags.
     *    This is extremely useful for various backend and frontend tasks:
     *    - **Search Indexing**: You can easily feed the plain text content into a search engine like Elasticsearch
     *      without the noise of HTML tags.
     *    - **Content Previews/Summaries**: Displaying a snippet of the content in a list view or a notification
     *      where formatting is not desired.
     *    - **Compatibility**: Sending the content to systems that don't support HTML, such as plain-text
     *      emails or SMS notifications.
     * - `both` - The API returns an object containing both the raw HTML and the plain text version. For example:
     *   ```json
     *   {
     *     "html": "<p>Hello, <strong>world</strong>!</p>",
     *     "text": "Hello, world!"
     *   }
     *   ```
     */
    renderMode?: 'html' | 'text' | 'both';
    /**
     * Sanitization level: 'strict', 'moderate', or 'none'.
     */
    sanitizeLevel?: 'strict' | 'moderate' | 'none';
    /**
     * Whether to allow images in HTML.
     */
    allowImages?: boolean;
    /**
     * Whether to allow links in HTML.
     */
    allowLinks?: boolean;
    /**
     * Whether to allow tables in HTML.
     */
    allowTables?: boolean;
    /**
     * Whether to allow forms in HTML.
     */
    allowForms?: boolean;
    /**
     * Whether to allow scripts in HTML.
     */
    allowScripts?: boolean;
    /**
     * Whether to allow iframes in HTML.
     */
    allowIframes?: boolean;
    /**
     * Whether to allow embedded content (video, audio, etc.).
     */
    allowEmbedded?: boolean;
    /**
     * Whether to allow CSS styles in HTML.
     */
    allowStyles?: boolean;
    /**
     * Whether to allow data attributes in HTML.
     */
    allowDataAttributes?: boolean;
    /**
     * Custom metadata for the HTML field.
     */
    metadata?: Record<string, unknown>;
    /**
     * Index signature to allow additional properties.
     */
    [key: string]: unknown;
}
/**
 * Type-safe configuration for HTML semantic.
 */
export interface AppliedHTMLSemantic extends AppliedDataSemantic {
    id: SemanticType.HTML;
    config?: HTMLConfig;
}
/**
 * Type guard to check if a semantic is an HTML semantic.
 */
export declare const isHTMLSemantic: (semantic: AppliedDataSemantic) => semantic is AppliedHTMLSemantic;
/**
 * Helper function to create an HTML semantic with configuration.
 */
export declare const createHTMLSemantic: (config?: HTMLConfig) => AppliedHTMLSemantic;
/**
 * Default configuration for HTML semantic.
 */
export declare const DEFAULT_HTML_CONFIG: HTMLConfig;
//# sourceMappingURL=HTML.d.ts.map