import type { BlockDef } from './types.js'; /** The fence language that marks a records embed. */ export declare const EMBED_LANG = "dj-records"; /** * The columns a no-`columns:` embed shows — THE single source of truth, used * by the parser (recording the embed into the IR) and the renderer (drawing * it) alike, because a default computed twice is a default that drifts. * * The block's DISPLAY columns when the format declares them — the same set the * block's own section renders, so an embedded row is indistinguishable from * the row it is. Only a block with no display config falls back to its * declared columns, and even then never the identity field: the standing * invariant is that a reader is never shown a raw uuid unless the format * declares it as a column and the author names it explicitly. */ export declare function defaultEmbedColumns(bdef: BlockDef): string[]; /** What the fence body asked for. `columns` empty means "the block's own", * resolved against the definition by whoever builds the IR entry. */ export interface EmbedSpec { block: string; columns: string[]; } /** Bodies of every ```dj-records fence in a section's markdown, in order. * Mirrors `extractMermaidBlocks`: same fence walk, same tolerance of an * unterminated fence (already reported by `lintStructure`). * * THE FENCE GRAMMAR HERE MUST MATCH `mdToHtml`'s EXACTLY — first token of * the info string, trailing text ignored. When the two drifted (this walk * demanded the token be the whole line), a fence opened as * ` ```dj-records extra ` was invisible to the linter but real to the * renderer: zero findings, and a page telling the reader to run a lint that * reports nothing. Every embed guarantee is only as loud as this regex. */ export declare function extractEmbedFences(md: string): string[]; /** * The fence body is YAML — the same parser the sidecar and the definition use, * never a new mini-language. * * Returns `error` rather than throwing so both callers can use it: the parser, * which turns it into a finding, and the renderer, which turns it into a * visible note. An unreadable spec is never silently skipped in either place. */ export declare function parseEmbedSpec(src: string): { spec: EmbedSpec | null; error: string | null; };