module ProAbstract.Structure
    (
    -- * Document
      Document (..)

    -- * Blocks
    , Block (..), Blocks (..), BlockTag (..)
    , TaggedBlocks (..), BlockTagContent (..)
    , TaggedPlainBlock (..)

    -- * Paragraph
    , Paragraph (..)

    -- * Inlines
    , Inline (..), Line (..), Lines (..), TaggedLines (..)

    -- * Text
    , PlainBlock (..), Fragment (..)

    -- * Plain or fork
    , CanBePlain (..), Plain, CanFork (..), Fork

    -- * Tagged or bare
    , IsTaggedOrBare (..), TaggedOrBare (..), tagged, bare

    -- * Traversals
    , HasManyParagraphs (..), HasManyPlainBlocks (..), HasManyPlainInlines (..)

    ) where


import ProAbstract.Structure.Block
import ProAbstract.Structure.BlockTag
import ProAbstract.Structure.BlockTagContent
import ProAbstract.Structure.CanBePlain
import ProAbstract.Structure.CanFork
import ProAbstract.Structure.Document
import ProAbstract.Structure.Fork
import ProAbstract.Structure.Fragment
import ProAbstract.Structure.HasManyParagraphs
import ProAbstract.Structure.HasManyPlainBlocks
import ProAbstract.Structure.HasManyPlainInlines
import ProAbstract.Structure.Inline
import ProAbstract.Structure.IsTaggedOrBare
import ProAbstract.Structure.Paragraph
import ProAbstract.Structure.Plain
import ProAbstract.Structure.PlainBlock