/**
 * OwlCoda TUI Spinner
 *
 * Animated terminal spinner with multiple styles, color shimmer effects,
 * and whimsical verb rotation. Renders to stderr to avoid corrupting
 * stdout pipe.
 */
/** Spinner glyph animations indexed by style name. */
export declare const SPINNER_GLYPHS: {
    /** OwlCoda default: subtle dots-to-stars */
    readonly owl: readonly ["🦉", "🌿", "🍃", "🌱", "🌿", "🍂"];
    /** Braille dots (compact, universal) */
    readonly dots: readonly ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"];
    /** Stars — bidirectional pulse (forward then reverse). */
    readonly stars: readonly ["·", "✢", "✳", "✶", "✻", "✽", "✻", "✶", "✳", "✢"];
    /** Line spinner */
    readonly line: readonly ["|", "/", "-", "\\"];
    /** Block growth */
    readonly blocks: readonly ["▏", "▎", "▍", "▌", "▋", "▊", "▉", "█", "▉", "▊", "▋", "▌", "▍", "▎", "▏"];
    /** Arc */
    readonly arc: readonly ["◜", "◠", "◝", "◞", "◡", "◟"];
    /** Bouncing ball */
    readonly bounce: readonly ["⠁", "⠂", "⠄", "⡀", "⢀", "⠠", "⠐", "⠈"];
};
export type SpinnerStyle = keyof typeof SPINNER_GLYPHS;
/**
 * Our own verb list — owl/nature/wisdom/forest themed.
 * Entirely original — distinct from any upstream verb vocabulary.
 */
export declare const OWL_VERBS: readonly string[];
/** Get a random verb from the whimsy list. */
export declare function randomVerb(): string;
/**
 * Interpolate between two RGB colors.
 * Returns `{r, g, b}` at position `t` (0–1).
 */
export declare function interpolateRgb(from: [number, number, number], to: [number, number, number], t: number): [number, number, number];
export interface SpinnerOptions {
    /** Message shown next to spinner. */
    message?: string;
    /** Glyph style. Default: 'dots'. */
    style?: SpinnerStyle;
    /** Animation interval (ms). Default: 80. */
    interval?: number;
    /** Enable color shimmer. Default: true. */
    shimmer?: boolean;
    /** Stream to write to. Default: stderr. */
    stream?: NodeJS.WriteStream;
}
export declare class Spinner {
    private frames;
    private frameIndex;
    private shimmerFrame;
    private timer;
    private message;
    private shimmerEnabled;
    private interval;
    private stream;
    private stalled;
    constructor(opts?: SpinnerOptions);
    /** Start the spinner animation. */
    start(message?: string): void;
    /** Stop the spinner and optionally clear the line. */
    stop(clear?: boolean): void;
    /** Update the spinner message while running. */
    update(message: string): void;
    /** Mark the spinner as stalled (shows red). */
    markStalled(): void;
    /** Check if the spinner is currently running. */
    isRunning(): boolean;
    /** Render one frame of the spinner. */
    private render;
}
export interface VerbSpinnerOptions {
    /** Fixed branded status message. When set, verb rotation is disabled. */
    message?: string;
    /** Glyph style. Default: 'stars'. */
    style?: SpinnerStyle;
    /** Verb rotation interval (ms) — how often the verb changes. Default: 4000. */
    verbInterval?: number;
    /** Glyph animation interval (ms). Default: 80. */
    glyphInterval?: number;
    /** Show elapsed time. Default: true. */
    showElapsed?: boolean;
    /** Show token count. Default: false. */
    showTokens?: boolean;
    /** Enable color shimmer. Default: true. */
    shimmer?: boolean;
    /** Stream to write to. Default: stderr. */
    stream?: NodeJS.WriteStream;
}
/**
 * Enhanced spinner that rotates whimsical verbs from OwlCoda's owl/nature vocabulary.
 *
 * Display: `✶ Moongazing… (3.2s)`
 */
export declare class VerbSpinner {
    private frames;
    private frameIndex;
    private shimmerFrame;
    private timer;
    private verb;
    private message;
    private verbTimer;
    private startedAt;
    private tokens;
    private stalled;
    private stalledAt;
    private stream;
    private shimmerEnabled;
    private showElapsed;
    private showTokens;
    private glyphInterval;
    private verbInterval;
    constructor(opts?: VerbSpinnerOptions);
    /** Start the verb spinner. */
    start(message?: string): void;
    /** Stop the spinner and clear the line. */
    stop(clear?: boolean): void;
    /** Update the token count (shown if showTokens is enabled). */
    updateTokens(count: number): void;
    /** Mark the spinner as stalled (gradual color shift to red). */
    markStalled(): void;
    /** Clear stalled state. */
    clearStalled(): void;
    /** Check if the spinner is currently running. */
    isRunning(): boolean;
    /** Get elapsed seconds since start. */
    getElapsed(): number;
    /** Render one frame. */
    private render;
}
/**
 * Show a quick progress indicator for an async operation.
 * Returns when the promise resolves. The spinner is cleaned up automatically.
 */
export declare function withSpinner<T>(promise: Promise<T>, message?: string, style?: SpinnerStyle): Promise<T>;
/**
 * Show a verb-rotating spinner for an async operation.
 */
export declare function withVerbSpinner<T>(promise: Promise<T>, opts?: VerbSpinnerOptions): Promise<T>;
/**
 * Blinking dot indicator for tool execution in-progress.
 * Alternates between showing and hiding the progress dot (●/⏺) with color transitions.
 * Supports live progress display for bash tool (line count, byte count).
 */
export declare class ToolUseLoader {
    private timer;
    private frame;
    private toolName;
    private stream;
    private startedAt;
    private readonly blinkInterval;
    private readonly dot;
    /** Live progress data from tool execution */
    private progress;
    constructor(toolName: string, opts?: {
        stream?: NodeJS.WriteStream;
        blinkInterval?: number;
    });
    start(): void;
    stop(clear?: boolean): void;
    isRunning(): boolean;
    /** Update progress data from bash tool streaming output. */
    updateProgress(totalLines: number, totalBytes: number, lastLine?: string): void;
    private render;
}
