import {SpinnerName} from 'cli-spinners'; declare namespace ora { interface Spinner { readonly interval?: number; readonly frames: string[]; } type Color = | 'black' | 'red' | 'green' | 'yellow' | 'blue' | 'magenta' | 'cyan' | 'white' | 'gray'; type PrefixTextGenerator = () => string; interface Options { /** Text to display after the spinner. */ readonly text?: string; /** Text or a function that returns text to display before the spinner. No prefix text will be displayed if set to an empty string. */ readonly prefixText?: string | PrefixTextGenerator; /** Name of one of the provided spinners. See [`example.js`](https://github.com/BendingBender/ora/blob/main/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: ['-', '+', '-'] } ``` */ readonly spinner?: SpinnerName | Spinner; /** Color of the spinner. @default 'cyan' */ readonly color?: Color; /** Set to `false` to stop Ora from hiding the cursor. @default true */ readonly hideCursor?: boolean; /** Indent the spinner with the given number of spaces. @default 0 */ readonly indent?: number; /** Interval between each frame. Spinners provide their own recommended interval, so you don't really need to specify this. Default: Provided by the spinner or `100`. */ readonly interval?: number; /** Stream to write the output. You could for example set this to `process.stdout` instead. @default process.stderr */ readonly stream?: NodeJS.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. */ readonly isEnabled?: boolean; /** Disable the spinner and all log text. All output is suppressed and `isEnabled` will be considered `false`. @default false */ readonly isSilent?: boolean; /** Discard stdin input (except Ctrl+C) while running if it's TTY. This prevents the spinner from twitching on input, outputting broken lines on `Enter` key presses, and prevents buffering of input while the spinner is running. This has no effect on Windows as there's no good way to implement discarding stdin properly there. @default true */ readonly discardStdin?: boolean; } interface PersistOptions { /** Symbol to replace the spinner with. @default ' ' */ readonly symbol?: string; /** Text to be persisted after the symbol. Default: Current `text`. */ readonly text?: string; /** Text or a function that returns text to be persisted before the symbol. No prefix text will be displayed if set to an empty string. Default: Current `prefixText`. */ readonly prefixText?: string | PrefixTextGenerator; } 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 or function that returns text before the spinner. No prefix text will be displayed if set to an empty string. */ prefixText: string | PrefixTextGenerator; /** 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 text. */ frame(): string; } } declare const ora: { /** Elegant terminal spinner. @param options - If a string is provided, it is treated as a shortcut for `options.text`. @example ``` import ora = require('ora'); const spinner = ora('Loading unicorns').start(); setTimeout(() => { spinner.color = 'yellow'; spinner.text = 'Loading rainbows'; }, 1000); ``` */ (options?: ora.Options | string): ora.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. */ promise( action: PromiseLike, options?: ora.Options | string ): ora.Ora; }; export = ora;