/**
 * Registry Exports
 *
 * Public API for the element registry system.
 */

// Element Registry
export {
  registerElement,
  unregisterElement,
  getElementDefinition,
  getAllElements,
  getElementsForScenario,
  getElementsByCategory,
  subscribeToRegistry,
  isElementRegistered,
  registerDefaultElements,
  // Default definitions
  regularPriceDefinition,
  salePriceDefinition,
  currencySymbolDefinition,
  discountBadgeDefinition,
} from "./elementRegistry";

export type { ElementDefinition } from "./elementRegistry";

// Element Factory
export { createElement, duplicateElement, generateElementId, getElementLabel, getElementIcon } from "./elementFactory";

// Preset Registry
export {
  registerPreset,
  unregisterPreset,
  getPresetDefinition,
  getAllPresets,
  getPresetsForScenario,
  subscribeToPresetRegistry,
  isPresetRegistered,
} from "./presetRegistry";

export type { PresetDefinition } from "./presetRegistry";

// Preset Definitions (auto-registers on import)
export {
  registerDefaultPresets,
  // Simple presets
  simpleBasicPreset,
  simpleCurrencyCenteredPreset,
  simpleElegantPreset,
  simpleBoldPreset,
  simplePresets,

  // Variable simple presets
  variableSimpleRangePreset,
  variableSimpleCompactPreset,
  variableSimplePresets,
  // Variable sale presets
  variableSaleRangePreset,
  variableSaleBadgePreset,
  variableSalePresets,
} from "./presetDefinitions";

// Advanced Animated Presets (auto-registers on import)
export {
  // Simple advanced presets
  simpleSplitSpeedPreset,
  simpleSlotMachinePreset,
  simpleLiquidMetalPreset,
  simpleGravitySpringPreset,
  simpleAdvancedPresets,
  registerAdvancedSimplePresets,
} from "@/presets/simple";

export {
  // Sale advanced presets
  saleClassicRedPreset,
  salePercentageCirclePreset,
  saleFlashGreenPreset,
  saleDoubleStackPreset,
  registerAdvancedSalePresets,
} from "@/presets/sale";

export {
  // Variable advanced presets
  variableSimpleBoutiquePreset,
  variableSimpleCyberpunkPreset,
  variableSimpleSoftUIPreset,
  variableSimpleFlashSalePreset,
  variableSimpleBrutalistPreset,
  registerAdvancedVariableSimplePresets,
} from "@/presets/variableSimple";

export {
  // Variable sale advanced presets
  variableSaleBoutiquePreset,
  variableSaleCyberpunkPreset,
  variableSaleSoftUIPreset,
  variableSaleFlashSalePreset,
  variableSaleBrutalistPreset,
  registerAdvancedVariableSalePresets,
} from "@/presets/variableSale";
