sig
  type t = Text_block.t
  val nil : t
  val fill : char -> width:int -> height:int -> t
  val space : width:int -> height:int -> t
  type valign = [ `Bottom | `Center | `Top ]
  type halign = [ `Center | `Left | `Right ]
  val text : ?align:halign -> string -> t
  val vcat : ?align:halign -> ?sep:t -> t list -> t
  val hcat : ?align:valign -> ?sep:t -> t list -> t
  val width : t -> int
  val height : t -> int
  val valign : valign -> t list -> t list
  val halign : halign -> t list -> t list
  val hstrut : int -> t
  val vstrut : int -> t
  val render : t -> string
  val compress_table_header :
    [ `Cols of (t * t list * halign) list ] ->
    [ `Header of t ] * [ `Rows of t list ]
end