// Imported from from DefinitelyTyped project.
// TypeScript definitions for ansi-colors
// Definitions by: Rogier Schouten <https://github.com/rogierschouten>
// Integrated by: Jordan Mele <https://github.com/Silic0nS0ldier>

export function bgblack(message: string): string;
export function bgblue(message: string): string;
export function bgcyan(message: string): string;
export function bggreen(message: string): string;
export function bgmagenta(message: string): string;
export function bgred(message: string): string;
export function bgwhite(message: string): string;
export function bgyellow(message: string): string;
export function black(message: string): string;
export function blue(message: string): string;
export function bold(message: string): string;
export function cyan(message: string): string;
export function dim(message: string): string;
export function gray(message: string): string;
export function green(message: string): string;
export function grey(message: string): string;
export function hidden(message: string): string;
export function inverse(message: string): string;
export function italic(message: string): string;
export function magenta(message: string): string;
export function red(message: string): string;
export function reset(message: string): string;
export function strikethrough(message: string): string;
export function underline(message: string): string;
export function white(message: string): string;
export function yellow(message: string): string;
