import type { EffectInput, EffectResult } from "../../combat/effects.js"; import { type HitReaction } from "../../combat/hitReaction.js"; import type { GameEvents } from "../../game/events.js"; import type { EntityStore } from "../../scene/entityStore.js"; import type { SimClock } from "../../time/simClock.js"; import type { FloatTextInput, HitReactionInput, TelegraphInput, VfxInput } from "../gameContext.js"; /** @internal What the combat-presentation helpers need from the live context: entity poses, the event bus, the sim clock (telegraph windups), and the raw effect application. */ export interface CombatFxDeps { entities: EntityStore; events: GameEvents; time: SimClock; applyEffect: (input: EffectInput) => EffectResult[]; } /** @internal Combat presentation surface registered under `ctx.scene.entity`: float text, VFX bursts, telegraphs, hit reactions, and the effect wrapper that emits damage/heal float text. */ export interface CombatFx { emitFloatText(input: FloatTextInput): void; emitVfx(input: VfxInput): void; fireTelegraph(input: TelegraphInput): () => void; applyHitReaction(input: HitReactionInput): HitReaction | null; applyEffectAndFloat(input: EffectInput): EffectResult[]; } /** @internal */ export declare function createCombatFx(d: CombatFxDeps): CombatFx;