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: any[]): T;
prototype: T;
};