// src/framework/shadowlisp/primitives/index.ts
//
// Vision 49: ShadowLisp DOM Primitive Elements
//
// Export all primitive elements for registration.

// Interface
export * from './ISlEvaluable';

// Literals (self-evaluating)
export * from './SlNum';
export * from './SlStr';
export * from './SlSym';
export * from './SlTrue';
export * from './SlFalse';
export * from './SlNil';
export * from './SlRef';

// McCarthy's 7 Primitives
export * from './SlQuote';
export * from './SlAtomP';
export * from './SlEq';
export * from './SlCar';
export * from './SlCdr';
export * from './SlCons';
export * from './SlCond';
export * from './SlClause';

// Derived Special Forms
export * from './SlList';
export * from './SlIf';
export * from './SlLambda';
export * from './SlDefine';
export * from './SlSet';
export * from './SlApply';

// Arithmetic
export * from './SlAdd';
export * from './SlSub';
export * from './SlMul';
export * from './SlGt';
export * from './SlLt';

// UI Bridge - THE CONNECTION TO VISIBLE DOM
export * from './SlRender';
export * from './SlBind';
export * from './SlOn';

// Layout Combinators - FUNCTIONS THAT CREATE DOM
export * from './SlElement';
export * from './SlMap';

// Higher-Order List Operations - REAL FUNCTIONAL PRIMITIVES
export * from './SlFilter';
export * from './SlFold';

// DOM Attribute Access - READ FROM ELEMENTS
export * from './SlGetAttr';

// Logic Primitives - REAL PREDICATES
export * from './SlLogic';

// DOM Manipulation - Vision 52 Universal LISP Control Plane
export * from './SlReparent';

function logPrimitiveRegistration(message: string): void {
  // eslint-disable-next-line no-console -- kernel ShadowLisp primitive registration has no actor context
  console.log(message);
}

/**
 * Register all ShadowLisp primitive elements.
 *
 * Call this once to ensure all custom elements are defined.
 */
export function registerSlPrimitives(): void {
  // Elements auto-register when their modules are imported.
  // This function exists to ensure all imports happen.
  logPrimitiveRegistration('[ShadowLisp] Primitives registered');
}
