import type { GeoJsonObject } from 'geojson';
import type { ImagePromptSegment } from './parseImagePrompts';
/**
 * Segment that represents plain markdown text inside a chat message.
 */
/**
 * Segment that represents plain markdown text inside a chat message.
 *
 * @private internal helper of `<ChatMessageItem/>`
 */
export type ChatTextSegment = {
    type: 'text';
    content: string;
};
/**
 * Segment that represents a Leaflet-ready map rendered from GeoJSON data.
 */
/**
 * Segment that represents a Leaflet-ready map rendered from GeoJSON data.
 *
 * @private internal helper of `<ChatMessageItem/>`
 */
export type ChatMapSegment = {
    type: 'map';
    data: GeoJsonObject;
};
/**
 * Segment that represents a fenced code block inside a chat message.
 */
/**
 * Segment that represents a fenced code block inside a chat message.
 *
 * @private internal helper of `<ChatMessageItem/>`
 */
export type ChatCodeSegment = {
    type: 'code';
    language?: string;
    code: string;
};
/**
 * Composite segment type that covers text, image prompts, map features, and code blocks.
 */
/**
 * Composite segment type that covers text, image prompts, map features, and code blocks.
 *
 * @private internal helper of `<ChatMessageItem/>`
 */
export type ChatMessageContentSegment = ImagePromptSegment | ChatTextSegment | ChatMapSegment | ChatCodeSegment;
/**
 * Splits chat message content into markdown, image prompt, and map segments while preserving their order.
 *
 * @private internal helper of `<ChatMessageItem/>`
 */
export declare function splitMessageContentIntoSegments(content: string): ReadonlyArray<ChatMessageContentSegment>;
