-- | a module for useful reexports from the modules
module Data.HTree
  ( -- * lists
    HL.HList (..)

    -- * trees
  , HT.HTree (..)
  , pattern L.HNodeL
  , HT.TyTree (..)
  , type L.TyNodeL

    -- ** mapping a tree
  , HT.hmap
  , HT.hcmap

    -- ** traversing a tree
  , HT.htraverse
  , HT.hctraverse

    -- ** folding a tree

    -- *** value level
  , HT.hFoldMap
  , HT.hcFoldMap
  , HT.hFlatten

    -- *** type level
  , HT.FlattenTree
  , HT.FlattenForest

    -- ** searching a tree
  , L.Labeled (..)
  , L.HasField (..)
  , L.getElem

    -- * useful reexports
  , Re.Proxy (..)
  , Re.Type
  , Re.Constraint
  , Re.Dict
  , pattern Re.Dict
  , Re.withDict
  )
where

import Data.HTree.Constraint qualified as Re
import Data.HTree.Labeled qualified as L
import Data.HTree.List qualified as HL
import Data.HTree.Tree qualified as HT
import Data.Kind qualified as Re
import Data.Proxy qualified as Re