/**
 * Huan LI <zixia@zixia.net>
 */
/**
 * Constructor<T>
 *  https://stackoverflow.com/a/50116912/1123955
 *
 * See also:
 *  - https://github.com/Microsoft/TypeScript/issues/10262
 *  - https://github.com/Microsoft/TypeScript/issues/5843#issuecomment-290972055
 *  - https://github.com/Microsoft/TypeScript/pull/13743
 *
 *  - Types for classes as values in TypeScript
 *      https://2ality.com/2020/04/classes-as-values-typescript.html
 */
/**
 * Huan(202108) version:
 *
 * T: the `Class`
 * P: `typeof Class`
 */
export declare type ClassInterface<C> = {
    [key in keyof C]: C[key];
};
declare type InstanceInterface<I> = {
    new (...args: any[]): I;
    prototype: I;
};
declare type Constructor<I extends {} = {}> = InstanceInterface<I>;
/**
 * Huan(202110): TypeError: Cannot read property 'valueDeclaration' of undefined #58
 *  https://github.com/huan/clone-class/issues/58
 *
 * - Update Oct 13: `typescript@4.5.0-beta` not fix
 */
/**
 * Huan(202109) versino:
 */
/**
 * https://github.com/wechaty/wechaty/issues/2090
 *
 * Warning: the InstantiatableClass returned by `constructor()` is not really instanciatable:
 *  it's just for typing compatible for some special conditions
 */
export type { Constructor, };
//# sourceMappingURL=constructor.d.ts.map