import type { Writable } from 'node:stream';
export type Color = 'black' | 'blue' | 'cyan' | 'gray' | 'green' | 'magenta' | 'red' | 'white' | 'yellow';
export type SpinnerStyle = {
    readonly frames: string[];
    readonly interval?: number | undefined;
};
export type SpinnerOptions = {
    readonly color?: Color | undefined;
    readonly spinner?: SpinnerStyle | undefined;
    readonly signal?: AbortSignal | undefined;
    readonly stream?: Writable | undefined;
    readonly text?: string | undefined;
};
export type Spinner = {
    color: Color;
    text: string;
    spinner: SpinnerStyle;
    get isSpinning(): boolean;
    clear(): Spinner;
    debug(text?: string | undefined, ...extras: any[]): Spinner;
    debugAndStop(text?: string | undefined, ...extras: any[]): Spinner;
    error(text?: string | undefined, ...extras: any[]): Spinner;
    errorAndStop(text?: string | undefined, ...extras: any[]): Spinner;
    fail(text?: string | undefined, ...extras: any[]): Spinner;
    failAndStop(text?: string | undefined, ...extras: any[]): Spinner;
    getText(): string;
    setText(text?: string | undefined): Spinner;
    indent(spaces?: number | undefined): Spinner;
    dedent(spaces?: number | undefined): Spinner;
    resetIndent(): Spinner;
    info(text?: string | undefined, ...extras: any[]): Spinner;
    infoAndStop(text?: string | undefined, ...extras: any[]): Spinner;
    log(text?: string | undefined, ...extras: any[]): Spinner;
    logAndStop(text?: string | undefined, ...extras: any[]): Spinner;
    start(text?: string | undefined): Spinner;
    stop(text?: string | undefined): Spinner;
    stopAndPersist(text?: string | undefined): Spinner;
    success(text?: string | undefined, ...extras: any[]): Spinner;
    successAndStop(text?: string | undefined, ...extras: any[]): Spinner;
    warn(text?: string | undefined, ...extras: any[]): Spinner;
    warnAndStop(text?: string | undefined, ...extras: any[]): Spinner;
};
export declare const ciSpinner: SpinnerStyle;
/**
 * Get available CLI spinner styles or a specific style by name.
 */
/*@__NO_SIDE_EFFECTS__*/
export declare function getCliSpinners(styleName?: string | undefined): SpinnerStyle | Record<string, SpinnerStyle> | undefined;
/**
 * Create a spinner instance for displaying loading indicators.
 */
/*@__NO_SIDE_EFFECTS__*/
export declare function Spinner(options?: SpinnerOptions | undefined): Spinner;
export declare const spinner: Spinner;
