# 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
defmodule Kreuzberg.DocumentNode do
  @moduledoc """
  A single node in the document tree.

  Each node has deterministic `id`, typed `content`, optional `parent`/`children`
  for tree structure, and metadata like page number, bounding box, and content layer.
  """

  @typedoc "A single node in the document tree."
  @type t :: %__MODULE__{
          id: String.t() | nil,
          content: String.t() | nil,
          parent: non_neg_integer() | nil,
          children: [non_neg_integer()],
          content_layer: String.t() | nil,
          page: non_neg_integer() | nil,
          page_end: non_neg_integer() | nil,
          bbox: map() | nil,
          annotations: [map()],
          attributes: map() | nil
        }

  defstruct id: nil,
            content: :title,
            parent: nil,
            children: [],
            content_layer: :body,
            page: nil,
            page_end: nil,
            bbox: nil,
            annotations: [],
            attributes: nil
end
