export {
  aggregatePcmPeaks,
  decodePcmSamples,
  validateWaveformPeakData,
} from './peak-aggregation';
export {
  createWaveformCacheKey,
  deserializeWaveformPeaks,
  serializeWaveformPeaks,
  WAVEFORM_PEAKS_MEDIA_TYPE,
  type WaveformCacheKeyOptions,
} from './waveform-cache';
export {
  describeWaveform,
  renderWaveformToCanvas,
  type WaveformCanvasRenderOptions,
  type WaveformCanvasRenderResult,
} from './waveform-canvas';
export {
  WaveformCancellationError,
  WaveformDataError,
  WaveformRuntimeBusyError,
  WaveformRuntimeTerminatedError,
} from './waveform-errors';
export {
  createDefaultWaveformWorkerFactory,
  createWaveformRuntime,
  WaveformRuntime,
} from './waveform-runtime';
export {
  DEFAULT_MAX_PCM_SAMPLES,
  MAX_WAVEFORM_BUCKET_COUNT,
  WAVEFORM_PEAKS_VERSION,
  type DecodedPcm,
  type PcmByteSource,
  type PcmEncoding,
  type PeakAggregationOptions,
  type RawPcmInput,
  type WaveformAggregateOptions,
  type WaveformPcmInput,
  type WaveformPeakData,
  type WaveformRuntimeOptions,
  type WaveformWorkerFactory,
  type WaveformWorkerLike,
  type WavePcmInput,
} from './waveform.types';
