// 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 }