type Arrayable = T[] | T; type Promisable = Promise | T; declare namespace uvu { type Callback = (context: T) => Promisable; interface Hook { (hook: Callback): void; each(hook: Callback): void; } interface Test { (name: string, test: Callback): void; only(name: string, test: Callback): void; skip(name?: string, test?: Callback): void; before: Hook; after: Hook run(): VoidFunction; } } declare module 'uvu' { type Context = Record; export const test: uvu.Test; export type Callback = uvu.Callback; export function suite(title?: string, suite?: T): uvu.Test; export function exec(bail?: boolean): Promise; } declare module 'uvu/assert' { type Types = 'string' | 'number' | 'boolean' | 'object' | 'undefined' | 'function'; export type Message = string | Error; export function ok(actual: any, msg?: Message): void; export function is(actual: any, expects: any, msg?: Message): void; export function equal(actual: any, expects: any, msg?: Message): void; export function type(actual: any, expects: Types, msg?: Message): void; export function instance(actual: any, expects: any, msg?: Message): void; export function snapshot(actual: string, expects: string, msg?: Message): void; export function fixture(actual: string, expects: string, msg?: Message): void; export function match(actual: string, expects: string | RegExp, msg?: Message): void; export function throws(fn: Function, expects?: Message | RegExp | Function, msg?: Message): void; export function not(actual: any, msg?: Message): void; export function unreachable(msg?: Message): void; export namespace is { function not(actual: any, expects: any, msg?: Message): void; } export namespace not { function ok(actual: any, msg?: Message): void; function equal(actual: any, expects: any, msg?: Message): void; function type(actual: any, expects: Types, msg?: Message): void; function instance(actual: any, expects: any, msg?: Message): void; function snapshot(actual: string, expects: string, msg?: Message): void; function fixture(actual: string, expects: string, msg?: Message): void; function match(actual: string, expects: string | RegExp, msg?: Message): void; function throws(fn: Function, expects?: Message | RegExp | Function, msg?: Message): void; } export class Assertion extends Error { name: 'Assertion'; code: 'ERR_ASSERTION'; details: false | string; generated: boolean; operator: string; expects: any; actual: any; constructor(options?: { message: string; details?: string; generated?: boolean; operator: string; expects: any; actual: any; }); } } declare module 'uvu/diff' { export function chars(input: any, expects: any): string; export function lines(input: any, expects: any, linenum?: number): string; export function direct(input: any, expects: any, lenA?: number, lenB?: number): string; export function compare(input: any, expects: any): string; export function arrays(input: any, expects: any): string; } declare module 'uvu/parse' { interface Suite { /** The relative file path */ name: string; /** The absolute file path */ file: string; } interface Options { cwd: string; require: Arrayable; ignore: Arrayable; } interface Argv { dir: string; suites: Suite[]; } function parse(dir: string, pattern: string, opts?: Partial): Promise; export = parse; }