// src/core/eval/strategy/index.ts
// Public API for the strategy subsystem.

export type {
  RunStrategy,
  RunResult,
  RunStats,
  StrategyOptions,
  RunOptions,
  StepFn,
  TraceEntry,
} from "./contract";

export {
  ZERO_RUN_STATS,
  runStatsFromSteps,
  valueResult,
  distResult,
  failResult,
  resolveStrategyOptions,
} from "./contract";

export {
  StrategyRegistry,
  globalStrategyRegistry,
} from "./registry";

export type {
  SecurityMiddleware,
  ObservationMiddleware,
  SecurityMiddlewareConfig,
  ObservationMiddlewareConfig,
} from "./middleware";

export {
  MiddlewareChain,
  MiddlewareDenied,
  withMiddleware,
} from "./chain";

export { DeterministicStrategy } from "./deterministic";

export {
  registerDeterministic,
  registerStrategyLoader,
  hasStrategyLoader,
  listStrategyLoaders,
  registerStrategyByName,
  registerNondeterministic,
  registerSearch,
  registerStochastic,
  registerComposed,
  registerAllStrategies,
} from "./registerAll";

export {
  setSessionStrategy,
  getSessionStrategy,
  clearSessionStrategy,
  useSessionSecurity,
  removeSessionSecurity,
  listSessionSecurity,
  useSessionObservation,
  removeSessionObservation,
  listSessionObservation,
  clearSessionActivations,
} from "./sessionActivation";
