{- |
Copyright  :  (C) 2025-2026, QBayLogic B.V.
License    :  BSD2 (see the file LICENSE)
Maintainer :  QBayLogic B.V. <devops@qbaylogic.com>
Module      : Clash.Shockwaves
Description : Shockwaves: Typed waveforms

Shockwaves is a system for typed waveforms in Clash.
"Clash.Shockwaves" exports the minimum requirements for using Shockwaves.

For more options, see "Clash.Shockwaves.Waveform", "Clash.Shockwaves.Style",
"Clash.Shockwaves.LUT" and "Clash.Shockwaves.Trace".

For the HOWTO guides on using Shockwaves, check out
[the documentation in the GitHub repository](https://github.com/clash-lang/clash-shockwaves/blob/main/docs/howto/README.md).

Note: this exports the "Clash.Shockwaves.Trace" module, which creates name space
collisions with "Clash.Signal.Trace". Import qualified or selectively.
-}
module Clash.Shockwaves (
  -- * Waveform
  Waveform (constructorStyles),
  WaveStyle (..),

  -- * Tracing
  module Clash.Shockwaves.Trace,
  writeFileJSON,
) where

import Clash.Shockwaves.Internal.Types
import Clash.Shockwaves.Internal.Util
import Clash.Shockwaves.Internal.Waveform
import Clash.Shockwaves.Trace