// biome-ignore lint/suspicious/noExplicitAny: Required for constructor variance compatibility
export type ConstructorArgs = any[];

export type Constructor<T = unknown> = new (...args: ConstructorArgs) => T;

export type Abstract<T = unknown> = abstract new (
	...args: ConstructorArgs
) => T;

export type Type<T = unknown> = Constructor<T> | Abstract<T>;
