///
import {Writable as WritableStream} from 'stream';
import {SpinnerName} from 'cli-spinners';
export type Spinner = Readonly<{
interval?: number;
frames: string[];
}>;
export type Color =
| 'black'
| 'red'
| 'green'
| 'yellow'
| 'blue'
| 'magenta'
| 'cyan'
| 'white'
| 'gray';
export type Options = Readonly<{
/**
* Text to display after the spinner.
*/
text?: string;
/**
* Text to display before the spinner.
*/
prefixText?: string;
/**
* Name of one of the provided spinners. See [`example.js`](https://github.com/BendingBender/ora/blob/master/example.js) in this repo if you want to test out different spinners. On Windows, it will always use the line spinner as the Windows command-line doesn't have proper Unicode support.
*
* @default 'dots'
*
* Or an object like:
*
* @example
*
* {
* interval: 80, // Optional
* frames: ['-', '+', '-']
* }
*
*/
spinner?: SpinnerName | Spinner;
/**
* Color of the spinner.
*
* @default 'cyan'
*/
color?: Color;
/**
* Set to `false` to stop Ora from hiding the cursor.
*
* @default true
*/
hideCursor?: boolean;
/**
* Indent the spinner with the given number of spaces.
*
* @default 0
*/
indent?: number;
/**
* Interval between each frame.
*
* Spinners provide their own recommended interval, so you don't really need to specify this. Default value: Provided by the spinner or `100`.
*/
interval?: number;
/**
* Stream to write the output.
*
* You could for example set this to `process.stdout` instead.
*
* @default process.stderr
*/
stream?: WritableStream;
/**
* Force enable/disable the spinner. If not specified, the spinner will be enabled if the `stream` is being run inside a TTY context (not spawned or piped) and/or not in a CI environment.
*
* Note that `{isEnabled: false}` doesn't mean it won't output anything. It just means it won't output the spinner, colors, and other ansi escape codes. It will still log text.
*/
isEnabled?: boolean;
}>;
/**
* Elegant terminal spinner.
*
* @param options - If a string is provided, it is treated as a shortcut for `options.text`.
*/
export default function ora(options?: Options | string): Ora;
/**
* Starts a spinner for a promise. The spinner is stopped with `.succeed()` if the promise fulfills or with `.fail()` if it rejects.
*
* @param action - The promise to start the spinner for.
* @param options - If a string is provided, it is treated as a shortcut for `options.text`.
* @returns The spinner instance.
*/
export function promise(
action: PromiseLike,
options?: Options | string
): Ora;
export type PersistOptions = Readonly<{
/**
* Symbol to replace the spinner with.
*
* @default ' '
*/
symbol?: string;
/**
* Text to be persisted after the symbol. Default: Current `text`.
*/
text?: string;
/**
* Text to be persisted before the symbol. Default: Current `prefixText`.
*/
prefixText?: string;
}>;
export interface Ora {
/**
* A boolean of whether the instance is currently spinning.
*/
readonly isSpinning: boolean;
/**
* Change the text after the spinner.
*/
text: string;
/**
* Change the text before the spinner.
*/
prefixText: string;
/**
* Change the spinner color.
*/
color: Color;
/**
* Change the spinner.
*/
spinner: SpinnerName | Spinner;
/**
* Change the spinner indent.
*/
indent: number;
/**
* Start the spinner.
*
* @param text - Set the current text.
* @returns The spinner instance.
*/
start(text?: string): Ora;
/**
* Stop and clear the spinner.
*
* @returns The spinner instance.
*/
stop(): Ora;
/**
* Stop the spinner, change it to a green `✔` and persist the current text, or `text` if provided.
*
* @param text - Will persist text if provided.
* @returns The spinner instance.
*/
succeed(text?: string): Ora;
/**
* Stop the spinner, change it to a red `✖` and persist the current text, or `text` if provided.
*
* @param text - Will persist text if provided.
* @returns The spinner instance.
*/
fail(text?: string): Ora;
/**
* Stop the spinner, change it to a yellow `⚠` and persist the current text, or `text` if provided.
*
* @param text - Will persist text if provided.
* @returns The spinner instance.
*/
warn(text?: string): Ora;
/**
* Stop the spinner, change it to a blue `ℹ` and persist the current text, or `text` if provided.
*
* @param text - Will persist text if provided.
* @returns The spinner instance.
*/
info(text?: string): Ora;
/**
* Stop the spinner and change the symbol or text.
*
* @returns The spinner instance.
*/
stopAndPersist(options?: PersistOptions): Ora;
/**
* Clear the spinner.
*
* @returns The spinner instance.
*/
clear(): Ora;
/**
* Manually render a new frame.
*
* @returns The spinner instance.
*/
render(): Ora;
/**
* Get a new frame.
*
* @returns The spinner instance.
*/
frame(): Ora;
}