export type Token = unknown; export type Class = new (...args: any[]) => T; export type AbstractClass = abstract new (...args: any[]) => T; export type ResolvedValue = V extends undefined ? T extends Class ? I : unknown : V;