declare module 'unexpected' { namespace unexpected { interface EnchantedPromise extends Promise { and = []>( assertionName: string, subject: unknown, ...args: A ): EnchantedPromise; } interface Expect { /** * @see http://unexpected.js.org/api/expect/ */ = []>( subject: unknown, assertionName: string, ...args: A ): EnchantedPromise; it = []>( assertionName: string, subject?: unknown, ...args: A ): EnchantedPromise; /** * @see http://unexpected.js.org/api/clone/ */ clone(): this; /** * @see http://unexpected.js.org/api/addAssertion/ */ addAssertion = []>( pattern: string, handler: (expect: Expect, subject: T, ...args: A) => void, ): this; /** * @see http://unexpected.js.org/api/addType/ */ addType(typeDefinition: unexpected.TypeDefinition): this; /** * @see http://unexpected.js.org/api/fail/ */ fail = []>(format: string, ...args: A): void; fail(error: E): void; /** * @see http://unexpected.js.org/api/freeze/ */ freeze(): this; /** * @see http://unexpected.js.org/api/use/ */ use(plugin: unexpected.PluginDefinition): this; } interface PluginDefinition { name?: string; version?: string; dependencies?: Array; installInto(expect: Expect): void; } interface TypeDefinition { name: string; identify(value: unknown): value is T; base?: string; equal?(a: T, b: T, equal: (a: unknown, b: unknown) => boolean): boolean; inspect?( value: T, depth: number, output: any, inspect: (value: unknown, depth: number) => any, ): void; } } const unexpected: unexpected.Expect; export = unexpected; }