// export type FilterFlags = { // [Key in keyof Base]: Base[Key] extends Condition ? Base[Key] : never // }; // export type AllowedNames = keyof FilterFlags; // export type SubType = Pick>; export type FilterFlags = { [Key in keyof Base]: Base[Key] extends Condition ? Key : never }; export type AllowedNames = FilterFlags[keyof Base]; export type SubType = Pick>; export type WithSelf any> = (self: S, ...args: Parameters) => ReturnType; export type FuncOrMethod any> = WithSelf | AllowedNames; export type ClassOf = Function & { prototype: T } export type ConstructorOf = { new(...args): T, prototype: T }