import { Graphics, Ticker } from 'pixi.js'; import { SymbolRegistry } from '../symbols/SymbolRegistry.js'; import { ColumnTarget } from '../frame/ColumnTarget.js'; import { HorizontalReel } from './HorizontalReel.js'; import { HorizontalCascadeTiming, HorizontalDirection } from './HorizontalReelTypes.js'; /** * Fluent builder for {@link HorizontalReel} — the sideways "these symbols pay * this round" banner reel above the reels. * * Its API mirrors {@link ReelSetBuilder}: register `.symbols(...)`, give it a * `.ticker(...)`, and `.build()`. The reel then follows the engine's spin * contract (`spin()` then `setResult(ids)`) plus a `cascade(...)` tumble. Only * `.symbols(...)` and `.ticker(...)` are required; everything else defaults * (a 4-wide, 72px, right-to-left reel — the `1×4` shape). */ export declare class HorizontalReelBuilder { private _visibleCount; private _cellW; private _cellH; private _gap; private _direction; private _speed; private _cascade; private _initialFrame; private _configurator; private _chrome; private _ticker; private _rng; /** How many symbol cells are visible at once. Default 4 (the `1×4` strip). */ visibleCount(n: number): this; /** Cell dimensions. `height` defaults to `width` (square); `gap` defaults to 4. */ cellSize(width: number, height?: number, opts?: { gap?: number; }): this; /** Travel direction while spinning. `rtl` scrolls leftward (default), `ltr` rightward. */ direction(direction: HorizontalDirection): this; /** Spin speed in pixels per frame. Default 22. */ spinSpeed(pxPerFrame: number): this; /** Drop/fall timing for `cascade(...)`. */ cascadeTiming(opts: HorizontalCascadeTiming): this; /** * Register the symbol classes shown on the reel, exactly like * `ReelSetBuilder.symbols`. The spin blur feeds from these ids; every id * passed to `setResult(...)` / `cascade(...)` must be registered here. * Required. */ symbols(configurator: (registry: SymbolRegistry) => void): this; /** * Rest frame shown before the first spin — the same `ColumnTarget[]` as * `ReelSetBuilder.initialFrame`. This reel is one column, so pass exactly one * entry whose `visible` holds `visibleCount` ids. Defaults to the first * `visibleCount` registered ids. */ initialFrame(frame: ColumnTarget[]): this; /** Optional backing drawn behind the reel, sized to the visible window. */ chrome(draw: (g: Graphics, width: number, height: number) => void): this; /** Injected RNG for the spin blur (deterministic demos / tests). */ rng(fn: () => number): this; /** Drives the spin — required. */ ticker(ticker: Ticker): this; build(): HorizontalReel; } //# sourceMappingURL=HorizontalReelBuilder.d.ts.map