import { Newable } from '@inversifyjs/common';

declare function findInPrototypeChain<T>(type: Newable, reader: (type: Newable) => T | undefined): T | undefined;

declare function getBaseType<TInstance, TArgs extends unknown[]>(type: Newable<TInstance, TArgs>): Newable | undefined;

interface Prototype {
    constructor: Newable;
}

export { findInPrototypeChain, getBaseType };
export type { Prototype };
