import { ImageBlock, ImageRun } from '../../../../contracts/src/index.js';
import { RunRenderContext } from './types.js';
type ImageFilterSource = Pick<ImageBlock, 'grayscale' | 'gain' | 'blacklevel' | 'lum'>;
export declare const buildImageFilters: (source: ImageFilterSource) => string[];
/**
 * Renders an ImageRun as an inline <img> element.
 *
 * SECURITY NOTES:
 * - Data URLs are validated against an allowlist of image MIME types
 * - Size limit prevents DoS attacks from extremely large images
 * - Only allows safe image MIME types; non-base64 data URLs are limited to SVG
 * - Non-data URLs are sanitized through sanitizeUrl to prevent XSS
 *
 * METADATA ATTRIBUTE:
 * - Adds `data-image-metadata` attribute to enable interactive resizing via ImageResizeOverlay
 * - Metadata includes: originalWidth, originalHeight, aspectRatio, min/max dimensions
 * - Only added when run.width > 0 && run.height > 0 to prevent invalid metadata
 * - Max dimensions: 3x original size or 1000px (whichever is larger)
 * - Min dimensions: 20px to ensure visibility and interactivity
 *
 * @param run - The ImageRun to render containing image source, dimensions, and spacing
 * @returns HTMLElement (img) or null if src is missing or invalid
 */
export declare const renderImageRun: (run: ImageRun, context: RunRenderContext) => HTMLElement | null;
export {};
//# sourceMappingURL=image-run.d.ts.map