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		(text: TemplateStringsArray, ...placeholders: unknown[]): string;
142
143		(...text: unknown[]): string;
144	}
145
146	interface Chalk extends ChalkFunction {
147		/**
148		Return a new Chalk instance.
149		*/
150		Instance: Instance;
151
152		/**
153		The color support for Chalk.
154
155		By default, color support is automatically detected based on the environment.
156
157		Levels:
158		- `0` - All colors disabled.
159		- `1` - Basic 16 colors support.
160		- `2` - ANSI 256 colors support.
161		- `3` - Truecolor 16 million colors support.
162		*/
163		level: Level;
164
165		/**
166		Use HEX value to set text color.
167
168		@param color - Hexadecimal value representing the desired color.
169
170		@example
171		```
172		import chalk = require('chalk');
173
174		chalk.hex('#DEADED');
175		```
176		*/
177		hex(color: string): Chalk;
178
179		/**
180		Use keyword color value to set text color.
181
182		@param color - Keyword value representing the desired color.
183
184		@example
185		```
186		import chalk = require('chalk');
187
188		chalk.keyword('orange');
189		```
190		*/
191		keyword(color: string): Chalk;
192
193		/**
194		Use RGB values to set text color.
195		*/
196		rgb(red: number, green: number, blue: number): Chalk;
197
198		/**
199		Use HSL values to set text color.
200		*/
201		hsl(hue: number, saturation: number, lightness: number): Chalk;
202
203		/**
204		Use HSV values to set text color.
205		*/
206		hsv(hue: number, saturation: number, value: number): Chalk;
207
208		/**
209		Use HWB values to set text color.
210		*/
211		hwb(hue: number, whiteness: number, blackness: number): Chalk;
212
213		/**
214		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.
215
216		30 <= code && code < 38 || 90 <= code && code < 98
217		For example, 31 for red, 91 for redBright.
218		*/
219		ansi(code: number): Chalk;
220
221		/**
222		Use a [8-bit unsigned number](https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit) to set text color.
223		*/
224		ansi256(index: number): Chalk;
225
226		/**
227		Use HEX value to set background color.
228
229		@param color - Hexadecimal value representing the desired color.
230
231		@example
232		```
233		import chalk = require('chalk');
234
235		chalk.bgHex('#DEADED');
236		```
237		*/
238		bgHex(color: string): Chalk;
239
240		/**
241		Use keyword color value to set background color.
242
243		@param color - Keyword value representing the desired color.
244
245		@example
246		```
247		import chalk = require('chalk');
248
249		chalk.bgKeyword('orange');
250		```
251		*/
252		bgKeyword(color: string): Chalk;
253
254		/**
255		Use RGB values to set background color.
256		*/
257		bgRgb(red: number, green: number, blue: number): Chalk;
258
259		/**
260		Use HSL values to set background color.
261		*/
262		bgHsl(hue: number, saturation: number, lightness: number): Chalk;
263
264		/**
265		Use HSV values to set background color.
266		*/
267		bgHsv(hue: number, saturation: number, value: number): Chalk;
268
269		/**
270		Use HWB values to set background color.
271		*/
272		bgHwb(hue: number, whiteness: number, blackness: number): Chalk;
273
274		/**
275		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.
276
277		30 <= code && code < 38 || 90 <= code && code < 98
278		For example, 31 for red, 91 for redBright.
279		Use the foreground code, not the background code (for example, not 41, nor 101).
280		*/
281		bgAnsi(code: number): Chalk;
282
283		/**
284		Use a [8-bit unsigned number](https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit) to set background color.
285		*/
286		bgAnsi256(index: number): Chalk;
287
288		/**
289		Modifier: Resets the current color chain.
290		*/
291		readonly reset: Chalk;
292
293		/**
294		Modifier: Make text bold.
295		*/
296		readonly bold: Chalk;
297
298		/**
299		Modifier: Emitting only a small amount of light.
300		*/
301		readonly dim: Chalk;
302
303		/**
304		Modifier: Make text italic. (Not widely supported)
305		*/
306		readonly italic: Chalk;
307
308		/**
309		Modifier: Make text underline. (Not widely supported)
310		*/
311		readonly underline: Chalk;
312
313		/**
314		Modifier: Inverse background and foreground colors.
315		*/
316		readonly inverse: Chalk;
317
318		/**
319		Modifier: Prints the text, but makes it invisible.
320		*/
321		readonly hidden: Chalk;
322
323		/**
324		Modifier: Puts a horizontal line through the center of the text. (Not widely supported)
325		*/
326		readonly strikethrough: Chalk;
327
328		/**
329		Modifier: Prints the text only when Chalk has a color support level > 0.
330		Can be useful for things that are purely cosmetic.
331		*/
332		readonly visible: Chalk;
333
334		readonly black: Chalk;
335		readonly red: Chalk;
336		readonly green: Chalk;
337		readonly yellow: Chalk;
338		readonly blue: Chalk;
339		readonly magenta: Chalk;
340		readonly cyan: Chalk;
341		readonly white: Chalk;
342
343		/*
344		Alias for `blackBright`.
345		*/
346		readonly gray: Chalk;
347
348		/*
349		Alias for `blackBright`.
350		*/
351		readonly grey: Chalk;
352
353		readonly blackBright: Chalk;
354		readonly redBright: Chalk;
355		readonly greenBright: Chalk;
356		readonly yellowBright: Chalk;
357		readonly blueBright: Chalk;
358		readonly magentaBright: Chalk;
359		readonly cyanBright: Chalk;
360		readonly whiteBright: Chalk;
361
362		readonly bgBlack: Chalk;
363		readonly bgRed: Chalk;
364		readonly bgGreen: Chalk;
365		readonly bgYellow: Chalk;
366		readonly bgBlue: Chalk;
367		readonly bgMagenta: Chalk;
368		readonly bgCyan: Chalk;
369		readonly bgWhite: Chalk;
370
371		/*
372		Alias for `bgBlackBright`.
373		*/
374		readonly bgGray: Chalk;
375
376		/*
377		Alias for `bgBlackBright`.
378		*/
379		readonly bgGrey: Chalk;
380
381		readonly bgBlackBright: Chalk;
382		readonly bgRedBright: Chalk;
383		readonly bgGreenBright: Chalk;
384		readonly bgYellowBright: Chalk;
385		readonly bgBlueBright: Chalk;
386		readonly bgMagentaBright: Chalk;
387		readonly bgCyanBright: Chalk;
388		readonly bgWhiteBright: Chalk;
389	}
390}
391
392/**
393Main Chalk object that allows to chain styles together.
394Call the last one as a method with a string argument.
395Order doesn't matter, and later styles take precedent in case of a conflict.
396This simply means that `chalk.red.yellow.green` is equivalent to `chalk.green`.
397*/
398declare const chalk: chalk.Chalk & chalk.ChalkFunction & {
399	supportsColor: chalk.ColorSupport | false;
400	Level: chalk.Level;
401	Color: Color;
402	ForegroundColor: ForegroundColor;
403	BackgroundColor: BackgroundColor;
404	Modifiers: Modifiers;
405	stderr: chalk.Chalk & {supportsColor: chalk.ColorSupport | false};
406};
407
408export = chalk;
409