1/**
2Basic foreground colors.
3
4[More colors here.](https://github.com/chalk/chalk/blob/master/readme.md#256-and-truecolor-color-support)
5*/
6declare type ForegroundColor =
7	| 'black'
8	| 'red'
9	| 'green'
10	| 'yellow'
11	| 'blue'
12	| 'magenta'
13	| 'cyan'
14	| 'white'
15	| 'gray'
16	| 'grey'
17	| 'blackBright'
18	| 'redBright'
19	| 'greenBright'
20	| 'yellowBright'
21	| 'blueBright'
22	| 'magentaBright'
23	| 'cyanBright'
24	| 'whiteBright';
25
26/**
27Basic background colors.
28
29[More colors here.](https://github.com/chalk/chalk/blob/master/readme.md#256-and-truecolor-color-support)
30*/
31declare type BackgroundColor =
32	| 'bgBlack'
33	| 'bgRed'
34	| 'bgGreen'
35	| 'bgYellow'
36	| 'bgBlue'
37	| 'bgMagenta'
38	| 'bgCyan'
39	| 'bgWhite'
40	| 'bgGray'
41	| 'bgGrey'
42	| 'bgBlackBright'
43	| 'bgRedBright'
44	| 'bgGreenBright'
45	| 'bgYellowBright'
46	| 'bgBlueBright'
47	| 'bgMagentaBright'
48	| 'bgCyanBright'
49	| 'bgWhiteBright';
50
51/**
52Basic colors.
53
54[More colors here.](https://github.com/chalk/chalk/blob/master/readme.md#256-and-truecolor-color-support)
55*/
56declare type Color = ForegroundColor | BackgroundColor;
57
58declare type Modifiers =
59	| 'reset'
60	| 'bold'
61	| 'dim'
62	| 'italic'
63	| 'underline'
64	| 'inverse'
65	| 'hidden'
66	| 'strikethrough'
67	| 'visible';
68
69declare namespace chalk {
70	/**
71	Levels:
72	- `0` - All colors disabled.
73	- `1` - Basic 16 colors support.
74	- `2` - ANSI 256 colors support.
75	- `3` - Truecolor 16 million colors support.
76	*/
77	type Level = 0 | 1 | 2 | 3;
78
79	interface Options {
80		/**
81		Specify the color support for Chalk.
82
83		By default, color support is automatically detected based on the environment.
84
85		Levels:
86		- `0` - All colors disabled.
87		- `1` - Basic 16 colors support.
88		- `2` - ANSI 256 colors support.
89		- `3` - Truecolor 16 million colors support.
90		*/
91		level?: Level;
92	}
93
94	/**
95	Return a new Chalk instance.
96	*/
97	type Instance = new (options?: Options) => Chalk;
98
99	/**
100	Detect whether the terminal supports color.
101	*/
102	interface ColorSupport {
103		/**
104		The color level used by Chalk.
105		*/
106		level: Level;
107
108		/**
109		Return whether Chalk supports basic 16 colors.
110		*/
111		hasBasic: boolean;
112
113		/**
114		Return whether Chalk supports ANSI 256 colors.
115		*/
116		has256: boolean;
117
118		/**
119		Return whether Chalk supports Truecolor 16 million colors.
120		*/
121		has16m: boolean;
122	}
123
124	interface ChalkFunction {
125		/**
126		Use a template string.
127
128		@remarks Template literals are unsupported for nested calls (see [issue #341](https://github.com/chalk/chalk/issues/341))
129
130		@example
131		```
132		import chalk = require('chalk');
133
134		log(chalk`
135		CPU: {red ${cpu.totalPercent}%}
136		RAM: {green ${ram.used / ram.total * 100}%}
137		DISK: {rgb(255,131,0) ${disk.used / disk.total * 100}%}
138		`);
139		```
140
141		@example
142		```
143		import chalk = require('chalk');
144
145		log(chalk.red.bgBlack`2 + 3 = {bold ${2 + 3}}`)
146		```
147		*/
148		(text: TemplateStringsArray, ...placeholders: unknown[]): string;
149
150		(...text: unknown[]): string;
151	}
152
153	interface Chalk extends ChalkFunction {
154		/**
155		Return a new Chalk instance.
156		*/
157		Instance: Instance;
158
159		/**
160		The color support for Chalk.
161
162		By default, color support is automatically detected based on the environment.
163
164		Levels:
165		- `0` - All colors disabled.
166		- `1` - Basic 16 colors support.
167		- `2` - ANSI 256 colors support.
168		- `3` - Truecolor 16 million colors support.
169		*/
170		level: Level;
171
172		/**
173		Use HEX value to set text color.
174
175		@param color - Hexadecimal value representing the desired color.
176
177		@example
178		```
179		import chalk = require('chalk');
180
181		chalk.hex('#DEADED');
182		```
183		*/
184		hex(color: string): Chalk;
185
186		/**
187		Use keyword color value to set text color.
188
189		@param color - Keyword value representing the desired color.
190
191		@example
192		```
193		import chalk = require('chalk');
194
195		chalk.keyword('orange');
196		```
197		*/
198		keyword(color: string): Chalk;
199
200		/**
201		Use RGB values to set text color.
202		*/
203		rgb(red: number, green: number, blue: number): Chalk;
204
205		/**
206		Use HSL values to set text color.
207		*/
208		hsl(hue: number, saturation: number, lightness: number): Chalk;
209
210		/**
211		Use HSV values to set text color.
212		*/
213		hsv(hue: number, saturation: number, value: number): Chalk;
214
215		/**
216		Use HWB values to set text color.
217		*/
218		hwb(hue: number, whiteness: number, blackness: number): Chalk;
219
220		/**
221		Use a [Select/Set Graphic Rendition](https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_parameters) (SGR) [color code number](https://en.wikipedia.org/wiki/ANSI_escape_code#3/4_bit) to set text color.
222
223		30 <= code && code < 38 || 90 <= code && code < 98
224		For example, 31 for red, 91 for redBright.
225		*/
226		ansi(code: number): Chalk;
227
228		/**
229		Use a [8-bit unsigned number](https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit) to set text color.
230		*/
231		ansi256(index: number): Chalk;
232
233		/**
234		Use HEX value to set background color.
235
236		@param color - Hexadecimal value representing the desired color.
237
238		@example
239		```
240		import chalk = require('chalk');
241
242		chalk.bgHex('#DEADED');
243		```
244		*/
245		bgHex(color: string): Chalk;
246
247		/**
248		Use keyword color value to set background color.
249
250		@param color - Keyword value representing the desired color.
251
252		@example
253		```
254		import chalk = require('chalk');
255
256		chalk.bgKeyword('orange');
257		```
258		*/
259		bgKeyword(color: string): Chalk;
260
261		/**
262		Use RGB values to set background color.
263		*/
264		bgRgb(red: number, green: number, blue: number): Chalk;
265
266		/**
267		Use HSL values to set background color.
268		*/
269		bgHsl(hue: number, saturation: number, lightness: number): Chalk;
270
271		/**
272		Use HSV values to set background color.
273		*/
274		bgHsv(hue: number, saturation: number, value: number): Chalk;
275
276		/**
277		Use HWB values to set background color.
278		*/
279		bgHwb(hue: number, whiteness: number, blackness: number): Chalk;
280
281		/**
282		Use a [Select/Set Graphic Rendition](https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_parameters) (SGR) [color code number](https://en.wikipedia.org/wiki/ANSI_escape_code#3/4_bit) to set background color.
283
284		30 <= code && code < 38 || 90 <= code && code < 98
285		For example, 31 for red, 91 for redBright.
286		Use the foreground code, not the background code (for example, not 41, nor 101).
287		*/
288		bgAnsi(code: number): Chalk;
289
290		/**
291		Use a [8-bit unsigned number](https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit) to set background color.
292		*/
293		bgAnsi256(index: number): Chalk;
294
295		/**
296		Modifier: Resets the current color chain.
297		*/
298		readonly reset: Chalk;
299
300		/**
301		Modifier: Make text bold.
302		*/
303		readonly bold: Chalk;
304
305		/**
306		Modifier: Emitting only a small amount of light.
307		*/
308		readonly dim: Chalk;
309
310		/**
311		Modifier: Make text italic. (Not widely supported)
312		*/
313		readonly italic: Chalk;
314
315		/**
316		Modifier: Make text underline. (Not widely supported)
317		*/
318		readonly underline: Chalk;
319
320		/**
321		Modifier: Inverse background and foreground colors.
322		*/
323		readonly inverse: Chalk;
324
325		/**
326		Modifier: Prints the text, but makes it invisible.
327		*/
328		readonly hidden: Chalk;
329
330		/**
331		Modifier: Puts a horizontal line through the center of the text. (Not widely supported)
332		*/
333		readonly strikethrough: Chalk;
334
335		/**
336		Modifier: Prints the text only when Chalk has a color support level > 0.
337		Can be useful for things that are purely cosmetic.
338		*/
339		readonly visible: Chalk;
340
341		readonly black: Chalk;
342		readonly red: Chalk;
343		readonly green: Chalk;
344		readonly yellow: Chalk;
345		readonly blue: Chalk;
346		readonly magenta: Chalk;
347		readonly cyan: Chalk;
348		readonly white: Chalk;
349
350		/*
351		Alias for `blackBright`.
352		*/
353		readonly gray: Chalk;
354
355		/*
356		Alias for `blackBright`.
357		*/
358		readonly grey: Chalk;
359
360		readonly blackBright: Chalk;
361		readonly redBright: Chalk;
362		readonly greenBright: Chalk;
363		readonly yellowBright: Chalk;
364		readonly blueBright: Chalk;
365		readonly magentaBright: Chalk;
366		readonly cyanBright: Chalk;
367		readonly whiteBright: Chalk;
368
369		readonly bgBlack: Chalk;
370		readonly bgRed: Chalk;
371		readonly bgGreen: Chalk;
372		readonly bgYellow: Chalk;
373		readonly bgBlue: Chalk;
374		readonly bgMagenta: Chalk;
375		readonly bgCyan: Chalk;
376		readonly bgWhite: Chalk;
377
378		/*
379		Alias for `bgBlackBright`.
380		*/
381		readonly bgGray: Chalk;
382
383		/*
384		Alias for `bgBlackBright`.
385		*/
386		readonly bgGrey: Chalk;
387
388		readonly bgBlackBright: Chalk;
389		readonly bgRedBright: Chalk;
390		readonly bgGreenBright: Chalk;
391		readonly bgYellowBright: Chalk;
392		readonly bgBlueBright: Chalk;
393		readonly bgMagentaBright: Chalk;
394		readonly bgCyanBright: Chalk;
395		readonly bgWhiteBright: Chalk;
396	}
397}
398
399/**
400Main Chalk object that allows to chain styles together.
401Call the last one as a method with a string argument.
402Order doesn't matter, and later styles take precedent in case of a conflict.
403This simply means that `chalk.red.yellow.green` is equivalent to `chalk.green`.
404*/
405declare const chalk: chalk.Chalk & chalk.ChalkFunction & {
406	supportsColor: chalk.ColorSupport | false;
407	Level: chalk.Level;
408	Color: Color;
409	ForegroundColor: ForegroundColor;
410	BackgroundColor: BackgroundColor;
411	Modifiers: Modifiers;
412	stderr: chalk.Chalk & {supportsColor: chalk.ColorSupport | false};
413};
414
415export = chalk;
416