import { StreamCacheTokenType, XMarkdownProps } from '../interface'; export interface StreamCache { pending: string; token: StreamCacheTokenType; processedLength: number; completeMarkdown: string; fence: FenceState; } /** * Incremental fenced-code-block state over the processed text, updated in O(1) * per character. Recomputing over the full accumulated text on every character * is O(N²) and freezes the page on long single-line content such as base64 * image data URIs. */ interface FenceState { /** Inside an open fence, considering completed lines only */ inFenced: boolean; fenceChar: string; fenceLen: number; /** Leading `/~ run of the current (incomplete) line */ lineFenceChar: string; lineFenceLen: number; lineFenceRunEnded: boolean; /** Whether every char after the leading run is whitespace (closing fences allow only whitespace) */ lineTailBlank: boolean; } declare const useStreaming: (input: string, config?: { streaming: XMarkdownProps['streaming']; components?: XMarkdownProps['components']; }) => string; export default useStreaming;