// This file is auto-generated by alef — DO NOT EDIT. // alef:hash:4e15143f4af1ae8bafbdb1506ef057da924484c66a19483966333558ad437e75 // To regenerate: alef generate // To verify freshness: alef verify --exit-code // Issues & docs: https://github.com/kreuzberg-dev/alef package dev.kreuzberg; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonSubTypes; import com.fasterxml.jackson.annotation.JsonTypeInfo; import java.util.Optional; /** * Tagged enum for node content. Each variant carries only type-specific data. * * Uses {@code #[serde(tag = "node_type")]} to avoid "type" keyword collision in * Go/Java/TypeScript bindings. */ @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "node_type", visible = false) @JsonSubTypes({ @JsonSubTypes.Type(value = NodeContent.Title.class, name = "title"), @JsonSubTypes.Type(value = NodeContent.Heading.class, name = "heading"), @JsonSubTypes.Type(value = NodeContent.Paragraph.class, name = "paragraph"), @JsonSubTypes.Type(value = NodeContent.List.class, name = "list"), @JsonSubTypes.Type(value = NodeContent.ListItem.class, name = "list_item"), @JsonSubTypes.Type(value = NodeContent.Table.class, name = "table"), @JsonSubTypes.Type(value = NodeContent.Image.class, name = "image"), @JsonSubTypes.Type(value = NodeContent.Code.class, name = "code"), @JsonSubTypes.Type(value = NodeContent.Quote.class, name = "quote"), @JsonSubTypes.Type(value = NodeContent.Formula.class, name = "formula"), @JsonSubTypes.Type(value = NodeContent.Footnote.class, name = "footnote"), @JsonSubTypes.Type(value = NodeContent.Group.class, name = "group"), @JsonSubTypes.Type(value = NodeContent.PageBreak.class, name = "page_break"), @JsonSubTypes.Type(value = NodeContent.Slide.class, name = "slide"), @JsonSubTypes.Type(value = NodeContent.DefinitionList.class, name = "definition_list"), @JsonSubTypes.Type(value = NodeContent.DefinitionItem.class, name = "definition_item"), @JsonSubTypes.Type(value = NodeContent.Citation.class, name = "citation"), @JsonSubTypes.Type(value = NodeContent.Admonition.class, name = "admonition"), @JsonSubTypes.Type(value = NodeContent.RawBlock.class, name = "raw_block"), @JsonSubTypes.Type(value = NodeContent.MetadataBlock.class, name = "metadata_block") }) @com.fasterxml.jackson.annotation.JsonIgnoreProperties(ignoreUnknown = true) public sealed interface NodeContent { /** Document title. */ record Title(@JsonProperty("text") String text) implements NodeContent { } /** Section heading with level (1-6). */ record Heading( @JsonProperty("level") byte level, @JsonProperty("text") String text ) implements NodeContent { } /** Body text paragraph. */ record Paragraph(@JsonProperty("text") String text) implements NodeContent { } /** List container — children are {@code ListItem} nodes. */ record List(@JsonProperty("ordered") boolean ordered) implements NodeContent { } /** Individual list item. */ record ListItem(@JsonProperty("text") String text) implements NodeContent { } /** Table with structured cell grid. */ record Table(@JsonProperty("grid") TableGrid grid) implements NodeContent { } /** Image reference. */ record Image( @JsonProperty("description") Optional description, @JsonProperty("image_index") Optional imageIndex, @JsonProperty("src") Optional src ) implements NodeContent { } /** Code block. */ record Code( @JsonProperty("text") String text, @JsonProperty("language") Optional language ) implements NodeContent { } /** Block quote — container, children carry the quoted content. */ record Quote() implements NodeContent { } /** Mathematical formula / equation. */ record Formula(@JsonProperty("text") String text) implements NodeContent { } /** Footnote reference content. */ record Footnote(@JsonProperty("text") String text) implements NodeContent { } /** Logical grouping container (section, key-value area). */ record Group( @JsonProperty("label") Optional label, @JsonProperty("heading_level") Optional headingLevel, @JsonProperty("heading_text") Optional headingText ) implements NodeContent { } /** Page break marker. */ record PageBreak() implements NodeContent { } /** Presentation slide container — children are the slide's content nodes. */ record Slide( @JsonProperty("number") int number, @JsonProperty("title") Optional title ) implements NodeContent { } /** Definition list container — children are {@code DefinitionItem} nodes. */ record DefinitionList() implements NodeContent { } /** Individual definition list entry with term and definition. */ record DefinitionItem( @JsonProperty("term") String term, @JsonProperty("definition") String definition ) implements NodeContent { } /** Citation or bibliographic reference. */ record Citation( @JsonProperty("key") String key, @JsonProperty("text") String text ) implements NodeContent { } /** Admonition / callout container (note, warning, tip, etc.). */ record Admonition( @JsonProperty("kind") String kind, @JsonProperty("title") Optional title ) implements NodeContent { } /** Raw block preserved verbatim from the source format. */ record RawBlock( @JsonProperty("format") String format, @JsonProperty("content") String content ) implements NodeContent { } /** Structured metadata block (email headers, YAML frontmatter, etc.). */ record MetadataBlock(@JsonProperty("entries") java.util.List> entries) implements NodeContent { } }