/** * Create a new error constructor instance. */ declare function makeError(name: string): makeError.Constructor; /** * Set the constructor prototype to `BaseError`. */ declare function makeError(super_: { new (...args: any[]): T }): makeError.Constructor; /** * Create a specialized error instance. */ declare function makeError(name: string | Function, super_: K): K & makeError.SpecializedConstructor; declare module makeError { /** * Use with ES2015+ inheritance. */ export class BaseError implements Error { message: string; name: string; stack: string; constructor(message?: string); } export interface Constructor { new (message?: string): T; super_: any prototype: T } export interface SpecializedConstructor { super_: any prototype: T } } export = makeError;