import type { AnimationStyle } from "../agent-registry.js"; /** Default cadence for terminal animation frames. */ export declare const ANIMATION_INTERVAL = 80; /** * Spinner catalogue. Dashboard-safe styles use single-cell glyphs so cards and * tables never jitter horizontally while frames advance. */ export declare const SPINNER_FRAMES: { readonly braille: readonly ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"]; readonly dots: readonly ["⠁", "⠂", "⠄", "⡀", "⢀", "⠠", "⠐", "⠈"]; readonly dotsDouble: readonly ["⢄", "⢂", "⢁", "⡁", "⡈", "⡐", "⢐", "⢠"]; readonly lines: readonly ["-", "\\", "|", "/"]; readonly classic: readonly ["*"]; readonly pulse: readonly ["◦", "•", "●", "•"]; readonly wave: readonly ["░", "▒", "▓", "█", "▓", "▒"]; readonly pipe: readonly ["┤", "┘", "┴", "└", "├", "┌", "┬", "┐"]; readonly moon: readonly ["○", "◑", "●", "◐"]; readonly clock: readonly ["◴", "◷", "◶", "◵"]; readonly earth: readonly ["◰", "◳", "◲", "◱"]; readonly radar: readonly ["▖", "▘", "▝", "▗"]; readonly pacman: readonly ["c ", "C ", "•c ", "• C", "••c", "••C"]; readonly spaceInvaders: readonly ["=o=", "-o-", "\\o/", "|o|"]; readonly pong: readonly ["|· |", "| · |", "| · |", "| ·|", "| · |", "| · |"]; readonly tetris: readonly ["▧", "▨", "▩", "▤"]; readonly heartbeat: readonly ["♥", "♡"]; readonly pulseWave: readonly ["·", "•", "●", "•", "·"]; readonly loadingBar: readonly ["[ ]", "[= ]", "[== ]", "[=== ]", "[====]", "[ ===]", "[ ==]", "[ =]"]; readonly shrug: readonly ["(•_•)", "( •_•)", "(⌐■_■)"]; readonly glitch: readonly ["▚", "▞", "█", "░", "▌", "▐"]; readonly binary: readonly ["01", "10", "11", "00"]; readonly matrix: readonly ["⡀", "⡄", "⡆", "⡇", "⣇", "⣧", "⣷", "⣿"]; readonly fire: readonly ["⡀", "⡄", "⡆", "⡇", "⢇", "⢎", "⠎", "⠘", "⠉", "⠁"]; readonly weather: readonly ["⎺⎺", "⎻⎻", "⎼⎼", "⎽⎽", "⎼⎼", "⎻⎻"]; readonly seedling: readonly ["_", "⡀", "⡄", "⡆", "⡇", "⣇", "⣧", "⣿"]; readonly squareSpin: readonly ["▖", "▘", "▝", "▗"]; readonly triangleSpin: readonly ["▲", "▶", "▼", "◀"]; readonly rhombus: readonly ["◇", "◈", "◆", "◈"]; readonly arrows: readonly ["←", "↖", "↑", "↗", "→", "↘", "↓", "↙"]; readonly bouncingBall: readonly ["⎽", "⎼", "⎻", "⎺", "⎻", "⎼"]; readonly orbit: readonly ["◜", "◝", "◞", "◟"]; readonly aperture: readonly ["◒", "◐", "◓", "◑"]; readonly signal: readonly ["▁", "▂", "▃", "▄", "▅", "▆", "▇", "█", "▇", "▆", "▅", "▄", "▃", "▂"]; readonly scanline: readonly ["▏", "▎", "▍", "▌", "▋", "▊", "▉", "█", "▉", "▊", "▋", "▌", "▍", "▎"]; readonly pipeline: readonly ["┈", "┉", "┅", "━", "┅", "┉"]; readonly cascade: readonly ["⣀", "⣄", "⣤", "⣦", "⣶", "⣷", "⣿", "⣾", "⣼", "⣸", "⣠"]; readonly weave: readonly ["⠏", "⠛", "⠹", "⢸", "⣰", "⣤", "⣆", "⡇"]; readonly kernel: readonly ["⊙", "⊚", "⊛", "⊚"]; readonly lattice: readonly ["⌜", "⌝", "⌟", "⌞"]; readonly prism: readonly ["△", "▷", "▽", "◁"]; readonly ripple: readonly ["·", "∙", "•", "●", "•", "∙"]; readonly shuttle: readonly ["▰", "▱", "▱", "▰", "▱", "▱"]; readonly reactor: readonly ["⊙", "◉", "●", "◉"]; readonly forge: readonly ["◇", "◈", "◆", "◈"]; readonly neural: readonly ["⠁", "⠉", "⠋", "⠛", "⠟", "⠿", "⡿", "⣿", "⣾", "⣼", "⣸", "⣰", "⣠", "⣀"]; readonly vector: readonly ["⇢", "⇡", "⇠", "⇣"]; readonly sentinel: readonly ["◡", "⊙", "◠", "⊙"]; readonly comet: readonly ["·", "∙", "•", "◉", "●", "◉", "•", "∙"]; readonly none: readonly [""]; }; export type SpinnerStyle = keyof typeof SPINNER_FRAMES; export type SpinnerRole = "agent" | "header" | "queue" | "handoff" | "swarm" | "tool" | "scheduler"; /** Styles guaranteed to remain compact enough for dashboard rows and cards. */ export declare const DASHBOARD_SPINNER_STYLES: readonly ["braille", "dotsDouble", "orbit", "aperture", "signal", "scanline", "pipeline", "cascade", "weave", "kernel", "lattice", "prism", "ripple", "reactor", "forge", "neural", "vector", "sentinel", "comet"]; export declare const SPINNER_PACKS: { readonly orchestrator: readonly ["braille", "dotsDouble", "orbit", "aperture", "signal", "scanline", "pipeline", "cascade", "weave", "kernel", "lattice", "prism", "ripple", "reactor", "forge", "neural", "vector", "sentinel", "comet"]; readonly signals: readonly ["signal", "scanline", "wave", "glitch", "matrix", "fire", "shuttle", "radar"]; readonly minimal: readonly ["dots", "pulse", "squareSpin", "rhombus", "bouncingBall", "moon"]; }; export declare function getSpinnerStyleForAgentType(agentType: string): SpinnerStyle | undefined; /** Mutable global frames retained for backwards compatibility. */ export declare const SPINNER: string[]; /** Apply a persisted motion profile while retaining the legacy function name. */ export declare function setSpinnerStyle(style: AnimationStyle | SpinnerStyle): void; export declare function getAnimationProfile(): AnimationStyle; export declare function isReducedMotion(): boolean; export declare function getSpinnerFrame(frame: number): string; export declare function getSpinnerFrameForStyle(style: SpinnerStyle, frame: number, phase?: number): string; /** * Resolve a spinner style for an agent row or runtime channel. * * `agentType` only affects the default `orchestrator` pack, and only for * `agent` (running) and `queue` roles. Other roles always use the pack's * dedicated channel style so tool/swarm/header motion stays role-semantic. */ export declare function getSpinnerStyleForAgent(agentId: string, role?: SpinnerRole, agentType?: string): SpinnerStyle; /** Stable style per agent plus a stable phase offset to avoid synchronized motion. */ export declare function getAgentSpinnerFrame(agentId: string, frame: number, role?: SpinnerRole, agentType?: string): string; /** Time-driven semantic frame for renderers that do not own a frame counter. */ export declare function getTimeSpinnerFrameForRole(role: Exclude, key: string, now?: number, interval?: number): string; export declare function getTimeSpinnerFrame(now?: number, interval?: number): string; export interface SpinnerOptions { style?: SpinnerStyle; customFrames?: string[]; interval?: number; prefix?: string | (() => string); suffix?: string | (() => string); colorizer?: (text: string) => string; } export declare class SpinnerEngine { private timer; private currentFrameIndex; private isTerminated; frames: string[]; interval: number; prefix: string | (() => string); suffix: string | (() => string); colorizer?: (text: string) => string; constructor(options?: SpinnerOptions); getFrame(): string; toString(): string; start(terminalMode?: boolean): this; stop(finalMessage?: string, terminalMode?: boolean): void; update(options: SpinnerOptions): void; } export declare function makeDualSpinner(style: SpinnerStyle, text: string): SpinnerOptions; export declare function getAlternateFrame(styleA: SpinnerStyle, styleB: SpinnerStyle, durationMs?: number): string; export declare function runShowcase(): void;