import { Reel } from '../../core/Reel.js'; import { SpeedProfile } from '../../config/types.js'; import { ReelPhase } from './ReelPhase.js'; type PhaseConstructor = ReelPhase> = new (reel: Reel, speed: SpeedProfile) => T; type PhaseCreatorFn = ReelPhase> = (reel: Reel, speed: SpeedProfile) => T; /** * Factory for creating reel phase instances. * * Ships with all four default phases pre-registered. * Users can override any phase by registering a custom constructor or factory function. * Use registerFactory() when the phase needs extra construction-time config * (e.g. cascade drop settings baked in via closure). */ export declare class PhaseFactory { private _registry; constructor(); /** Register or override a phase type by constructor. */ register>(name: string, PhaseClass: PhaseConstructor): void; /** * Register or override a phase type by factory function. * Use this when the phase needs extra args at construction time. * * @example * factory.registerFactory('cascade:dropIn', (reel, speed) => new CascadeDropInPhase(reel, speed, dropConfig)); */ registerFactory>(name: string, factory: PhaseCreatorFn): void; /** Create a phase instance for a reel. */ create = ReelPhase>(name: string, reel: Reel, speed: SpeedProfile): T; has(name: string): boolean; } export {}; //# sourceMappingURL=PhaseFactory.d.ts.map