import { type AnimationState, type FramePhase } from "./animationState.js"; export interface ComboStep { id: string; clip: string; cancelInto?: readonly string[]; cancelPhases?: readonly FramePhase[]; stance?: string; } export interface ComboString { id: string; entry: string; steps: readonly ComboStep[]; } export declare function stepById(combo: ComboString, stepId: string): ComboStep | null; export interface AdvanceComboInput { combo: ComboString; currentStepId: string | null; requestedStepId: string; phases: readonly FramePhase[]; stance?: string; } export type AdvanceComboResult = { accepted: true; step: ComboStep; } | { accepted: false; reason: "unknown-step" | "not-chainable" | "wrong-stance" | "window-closed"; }; export declare function advanceCombo(input: AdvanceComboInput): AdvanceComboResult; export interface ComboRunner { currentStep(): string | null; request(stepId: string, stance?: string): AdvanceComboResult; reset(): void; } /** * Advance a chained melee string from timed inputs, tracking the current step and its cancel/continue windows. * * @capability combo-chain advance a chained melee string from timed button inputs */ export declare function createComboRunner(combo: ComboString, anim: AnimationState): ComboRunner;