import { Reel } from '../../core/Reel.js'; import { SpeedProfile } from '../../config/types.js'; /** * Abstract base for reel spin phases. * * Each phase represents one stage of the spin lifecycle: * START → SPIN → ANTICIPATION → STOP. * * Phases are entered and exited by SpinController, and can be skipped * if marked as skippable and the user triggers skip/slam-stop. * * @typeParam TConfig - Phase-specific configuration type. */ export declare abstract class ReelPhase { abstract readonly name: string; abstract readonly skippable: boolean; protected _reel: Reel; protected _speed: SpeedProfile; protected _resolve: (() => void) | null; protected _isActive: boolean; constructor(reel: Reel, speed: SpeedProfile); get reel(): Reel; get isActive(): boolean; /** Enter the phase. Returns a promise that resolves when the phase is complete. */ run(config: TConfig): Promise; /** Skip the phase immediately (if skippable). */ skip(): void; /** Force-complete the phase regardless of skippable flag. */ forceComplete(): void; /** Called each frame while the phase is active. */ abstract update(deltaMs: number): void; /** Subclass: set up the phase (start tweens, set speed, etc). */ protected abstract onEnter(config: TConfig): void; /** Subclass: clean up when skipped or force-completed. */ protected abstract onSkip(): void; /** Call when the phase naturally completes. */ protected _complete(): void; } //# sourceMappingURL=ReelPhase.d.ts.map