/** * Declares the primitives of an abstract type. * * @export * @interface AbstractType * @extends {Function} */ export interface AbstractType extends Function { [key: string]: any; } /** * Declares the primitives of an instantiable type. * * @export * @interface Type * @extends {Function} * @template T The actual type. */ export interface Type extends AbstractType { new (...args: any[]): T; }