export {
  createInitialIwt2ArenaState,
  tickIwt2Arena,
} from './arena'

export {
  circlesOverlap,
  circleIntersectsSegment,
  distanceToSegment,
  separateCircles,
} from './collision'

export {
  applyPartyDamageInShape,
  createArenaEvent,
  createCircleIndicator,
  createConeIndicator,
  createDonutIndicator,
  createLaneIndicator,
  createLinearMovementPlan,
  indicatorPhaseFromAttack,
  isIndicatorActive,
  partyMemberIntersectsShape,
} from './mechanics'

export {
  castIwt2HealerAbility,
} from './healing'

export {
  addVec2,
  clamp,
  clampVec2ToArena,
  distanceVec2,
  dotVec2,
  lengthSqVec2,
  lengthVec2,
  moveToward,
  normalizeVec2,
  scaleVec2,
  subtractVec2,
} from './vector'

export type {
  Iwt2ArenaBounds,
  Iwt2ArenaEvent,
  Iwt2ArenaEventType,
  Iwt2ArenaIndicator,
  Iwt2ArenaIndicatorPhase,
  Iwt2ArenaInput,
  Iwt2ArenaState,
  Iwt2BossAttackPhase,
  Iwt2BossEntityState,
  Iwt2Circle,
  Iwt2EntityId,
  Iwt2EntityKind,
  Iwt2GroundHazardState,
  Iwt2HotEffectState,
  Iwt2HostileAddAttackPhase,
  Iwt2HostileAddState,
  Iwt2PartyAiRole,
  Iwt2PartyEntityId,
  Iwt2PartyEntityState,
  Iwt2ProjectileEntityState,
  Iwt2StatusState,
  Iwt2Vec2,
} from './types'
