/** * Unicode Braille Spinners * * A collection of animated unicode spinners built on braille characters (U+2800 block). * Each braille char is a 2×4 dot grid — these generators compose them into * multi-character animated frames for use as loading indicators. * * @remarks * Forked from gunnargray-dev/unicode-animations (MIT). The CLEO fork adds * canon-themed spinners over time and integrates with the CLEO terminal runtime * (TTY detection, --quiet, NO_COLOR) via the AnimationContext layer (added later). */ export interface Spinner { readonly frames: readonly string[]; readonly interval: number; } export type BrailleSpinnerName = 'braille' | 'braillewave' | 'dna' | 'scan' | 'rain' | 'scanline' | 'pulse' | 'snake' | 'sparkle' | 'cascade' | 'columns' | 'orbit' | 'breathe' | 'waverows' | 'checkerboard' | 'helix' | 'fillsweep' | 'diagswipe'; /** * Convert a 2D boolean grid into a braille string. * grid[row][col] = true means dot is raised. * Width must be even (2 dot-columns per braille char). */ export declare function gridToBraille(grid: boolean[][]): string; /** Create an empty grid of given dimensions */ export declare function makeGrid(rows: number, cols: number): boolean[][]; export declare const spinners: Record; export default spinners; /** * Canon-themed spinner identifiers drawn from CLEO workshop vocabulary. * * @remarks * Each canon name is an alias pointing at the same {@link Spinner} object * registered in {@link spinners} under its generic name. */ export type CanonSpinnerName = 'looming' | 'weaving' | 'heartbeat' | 'awakening' | 'sweeping' | 'watching' | 'cascade' | 'tapestry' | 'refinery'; /** * Canon-name → generic-name lookup table. * * @remarks * Exposed so consumers can render the underlying generic name in diagnostics * (`looming → helix`) without hardcoding the relationship. */ export declare const CANON_TO_GENERIC: Record; /** * Canon-themed spinner registry — aliases on top of {@link spinners}. * * @remarks * Each entry references the same {@link Spinner} object as the generic * registry, so frame data is never duplicated. Renaming a generic spinner * automatically updates the canon view. */ export declare const canonSpinners: Record; /** * Resolve any spinner name (generic OR canon) to its {@link Spinner}. * * @param name - Either a {@link BrailleSpinnerName} or a {@link CanonSpinnerName} * @returns The matching spinner, or `undefined` if the name is not registered. */ export declare function resolveSpinner(name: string): Spinner | undefined; //# sourceMappingURL=braille.d.ts.map