declare namespace Proxymi { type Like = { [key in keyof T]: T[key]; }; type SuperConstructor = { new (...args: any[]): any; prototype: object | null; }; type ClusteredConstructor = { /** * Allows accessing a property or calling a method in a specified base class, eliminating * ambiguity when multiple base classes share a property with the same key. * * @param type * The referenced base class. */ class(type: U): U; }; type ClusteredPrototype = { /** * Allows accessing a property or calling a method in a specified base class, eliminating * ambiguity when multiple base classes share a property with the same key. * * @param type * The referenced base class. */ class(type: U): InstanceType; }; type SuperConstructorInvokeInfo = { super: T; arguments?: ConstructorParameters; }; } interface ObjectConstructor { /** * Returns the list of prototypes of an object. * * @param o * The object that references the prototypes. */ getPrototypeListOf(o: any): any[]; } /** * Allows defining a derived class that inherits from multiple base classes. */ declare function classes < T1 extends Proxymi.SuperConstructor, > ( type1: T1, ): Proxymi.Like & { new ( args1?: ConstructorParameters, ): Proxymi.ClusteredPrototype; new ( ...args: ( | Proxymi.SuperConstructorInvokeInfo )[] ): Proxymi.ClusteredPrototype; } & ( new (...args: any[]) => & InstanceType & Proxymi.ClusteredPrototype ) & Proxymi.ClusteredConstructor; /** * Allows defining a derived class that inherits from multiple base classes. */ declare function classes < T1 extends Proxymi.SuperConstructor, T2 extends Proxymi.SuperConstructor, > ( type1: T1, type2: T2, ): Proxymi.Like & { new ( args1?: ConstructorParameters, args2?: ConstructorParameters, ): Proxymi.ClusteredPrototype; new ( ...args: ( | Proxymi.SuperConstructorInvokeInfo | Proxymi.SuperConstructorInvokeInfo )[] ): Proxymi.ClusteredPrototype; } & ( new (...args: any[]) => & InstanceType & InstanceType & Proxymi.ClusteredPrototype ) & Proxymi.ClusteredConstructor; /** * Allows defining a derived class that inherits from multiple base classes. */ declare function classes < T1 extends Proxymi.SuperConstructor, T2 extends Proxymi.SuperConstructor, T3 extends Proxymi.SuperConstructor, > ( type1: T1, type2: T2, type3: T3, ): Proxymi.Like & { new ( args1?: ConstructorParameters, args2?: ConstructorParameters, args3?: ConstructorParameters, ): Proxymi.ClusteredPrototype; new ( ...args: ( | Proxymi.SuperConstructorInvokeInfo | Proxymi.SuperConstructorInvokeInfo | Proxymi.SuperConstructorInvokeInfo )[] ): Proxymi.ClusteredPrototype; } & ( new (...args: any[]) => & InstanceType & InstanceType & InstanceType & Proxymi.ClusteredPrototype ) & Proxymi.ClusteredConstructor; /** * Allows defining a derived class that inherits from multiple base classes. */ declare function classes < T1 extends Proxymi.SuperConstructor, T2 extends Proxymi.SuperConstructor, T3 extends Proxymi.SuperConstructor, T4 extends Proxymi.SuperConstructor, > ( type1: T1, type2: T2, type3: T3, type4: T4, ): Proxymi.Like & { new ( args1?: ConstructorParameters, args2?: ConstructorParameters, args3?: ConstructorParameters, args4?: ConstructorParameters, ): Proxymi.ClusteredPrototype; new ( ...args: ( | Proxymi.SuperConstructorInvokeInfo | Proxymi.SuperConstructorInvokeInfo | Proxymi.SuperConstructorInvokeInfo | Proxymi.SuperConstructorInvokeInfo )[] ): Proxymi.ClusteredPrototype; } & ( new (...args: any[]) => & InstanceType & InstanceType & InstanceType & InstanceType & Proxymi.ClusteredPrototype ) & Proxymi.ClusteredConstructor; /** * Allows defining a derived class that inherits from multiple base classes. */ declare function classes < T1 extends Proxymi.SuperConstructor, T2 extends Proxymi.SuperConstructor, T3 extends Proxymi.SuperConstructor, T4 extends Proxymi.SuperConstructor, T5 extends Proxymi.SuperConstructor, > ( type1: T1, type2: T2, type3: T3, type4: T4, type5: T5, ): Proxymi.Like & { new ( args1?: ConstructorParameters, args2?: ConstructorParameters, args3?: ConstructorParameters, args4?: ConstructorParameters, args5?: ConstructorParameters, ): Proxymi.ClusteredPrototype; new ( ...args: ( | Proxymi.SuperConstructorInvokeInfo | Proxymi.SuperConstructorInvokeInfo | Proxymi.SuperConstructorInvokeInfo | Proxymi.SuperConstructorInvokeInfo | Proxymi.SuperConstructorInvokeInfo )[] ): Proxymi.ClusteredPrototype; } & ( new (...args: any[]) => & InstanceType & InstanceType & InstanceType & InstanceType & InstanceType & Proxymi.ClusteredPrototype ) & Proxymi.ClusteredConstructor; /** * Allows defining a derived class that inherits from multiple base classes. */ declare function classes < T1 extends Proxymi.SuperConstructor, T2 extends Proxymi.SuperConstructor, T3 extends Proxymi.SuperConstructor, T4 extends Proxymi.SuperConstructor, T5 extends Proxymi.SuperConstructor, T6 extends Proxymi.SuperConstructor, > ( type1: T1, type2: T2, type3: T3, type4: T4, type5: T5, type6: T6, ): Proxymi.Like & { new ( args1?: ConstructorParameters, args2?: ConstructorParameters, args3?: ConstructorParameters, args4?: ConstructorParameters, args5?: ConstructorParameters, args6?: ConstructorParameters, ): Proxymi.ClusteredPrototype; new ( ...args: ( | Proxymi.SuperConstructorInvokeInfo | Proxymi.SuperConstructorInvokeInfo | Proxymi.SuperConstructorInvokeInfo | Proxymi.SuperConstructorInvokeInfo | Proxymi.SuperConstructorInvokeInfo | Proxymi.SuperConstructorInvokeInfo )[] ): Proxymi.ClusteredPrototype; } & ( new (...args: any[]) => & InstanceType & InstanceType & InstanceType & InstanceType & InstanceType & InstanceType & Proxymi.ClusteredPrototype ) & Proxymi.ClusteredConstructor; /** * Allows defining a derived class that inherits from multiple base classes. */ declare function classes < T1 extends Proxymi.SuperConstructor, T2 extends Proxymi.SuperConstructor, T3 extends Proxymi.SuperConstructor, T4 extends Proxymi.SuperConstructor, T5 extends Proxymi.SuperConstructor, T6 extends Proxymi.SuperConstructor, T7 extends Proxymi.SuperConstructor, > ( type1: T1, type2: T2, type3: T3, type4: T4, type5: T5, type6: T6, type7: T7, ): Proxymi.Like & { new ( args1?: ConstructorParameters, args2?: ConstructorParameters, args3?: ConstructorParameters, args4?: ConstructorParameters, args5?: ConstructorParameters, args6?: ConstructorParameters, args7?: ConstructorParameters, ): Proxymi.ClusteredPrototype; new ( ...args: ( | Proxymi.SuperConstructorInvokeInfo | Proxymi.SuperConstructorInvokeInfo | Proxymi.SuperConstructorInvokeInfo | Proxymi.SuperConstructorInvokeInfo | Proxymi.SuperConstructorInvokeInfo | Proxymi.SuperConstructorInvokeInfo | Proxymi.SuperConstructorInvokeInfo )[] ): Proxymi.ClusteredPrototype; } & ( new (...args: any[]) => & InstanceType & InstanceType & InstanceType & InstanceType & InstanceType & InstanceType & InstanceType & Proxymi.ClusteredPrototype ) & Proxymi.ClusteredConstructor; /** * Allows defining a derived class that inherits from multiple base classes. */ declare function classes < T1 extends Proxymi.SuperConstructor, T2 extends Proxymi.SuperConstructor, T3 extends Proxymi.SuperConstructor, T4 extends Proxymi.SuperConstructor, T5 extends Proxymi.SuperConstructor, T6 extends Proxymi.SuperConstructor, T7 extends Proxymi.SuperConstructor, T8 extends Proxymi.SuperConstructor, > ( type1: T1, type2: T2, type3: T3, type4: T4, type5: T5, type6: T6, type7: T7, type8: T8, ): Proxymi.Like & { new ( args1?: ConstructorParameters, args2?: ConstructorParameters, args3?: ConstructorParameters, args4?: ConstructorParameters, args5?: ConstructorParameters, args6?: ConstructorParameters, args7?: ConstructorParameters, args8?: ConstructorParameters, ): Proxymi.ClusteredPrototype; new ( ...args: ( | Proxymi.SuperConstructorInvokeInfo | Proxymi.SuperConstructorInvokeInfo | Proxymi.SuperConstructorInvokeInfo | Proxymi.SuperConstructorInvokeInfo | Proxymi.SuperConstructorInvokeInfo | Proxymi.SuperConstructorInvokeInfo | Proxymi.SuperConstructorInvokeInfo | Proxymi.SuperConstructorInvokeInfo )[] ): Proxymi.ClusteredPrototype; } & ( new (...args: any[]) => & InstanceType & InstanceType & InstanceType & InstanceType & InstanceType & InstanceType & InstanceType & InstanceType & Proxymi.ClusteredPrototype ) & Proxymi.ClusteredConstructor; /** * Allows defining a derived class that inherits from multiple base classes. */ declare function classes < T1 extends Proxymi.SuperConstructor, T2 extends Proxymi.SuperConstructor, T3 extends Proxymi.SuperConstructor, T4 extends Proxymi.SuperConstructor, T5 extends Proxymi.SuperConstructor, T6 extends Proxymi.SuperConstructor, T7 extends Proxymi.SuperConstructor, T8 extends Proxymi.SuperConstructor, T9 extends Proxymi.SuperConstructor, > ( type1: T1, type2: T2, type3: T3, type4: T4, type5: T5, type6: T6, type7: T7, type8: T8, type9: T9, ): Proxymi.Like & { new ( args1?: ConstructorParameters, args2?: ConstructorParameters, args3?: ConstructorParameters, args4?: ConstructorParameters, args5?: ConstructorParameters, args6?: ConstructorParameters, args7?: ConstructorParameters, args8?: ConstructorParameters, args9?: ConstructorParameters, ): Proxymi.ClusteredPrototype; new ( ...args: ( | Proxymi.SuperConstructorInvokeInfo | Proxymi.SuperConstructorInvokeInfo | Proxymi.SuperConstructorInvokeInfo | Proxymi.SuperConstructorInvokeInfo | Proxymi.SuperConstructorInvokeInfo | Proxymi.SuperConstructorInvokeInfo | Proxymi.SuperConstructorInvokeInfo | Proxymi.SuperConstructorInvokeInfo | Proxymi.SuperConstructorInvokeInfo )[] ): Proxymi.ClusteredPrototype; } & ( new (...args: any[]) => & InstanceType & InstanceType & InstanceType & InstanceType & InstanceType & InstanceType & InstanceType & InstanceType & InstanceType & Proxymi.ClusteredPrototype ) & Proxymi.ClusteredConstructor; /** * Allows defining a derived class that inherits from multiple base classes. */ declare function classes < T1 extends Proxymi.SuperConstructor, T2 extends Proxymi.SuperConstructor, T3 extends Proxymi.SuperConstructor, T4 extends Proxymi.SuperConstructor, T5 extends Proxymi.SuperConstructor, T6 extends Proxymi.SuperConstructor, T7 extends Proxymi.SuperConstructor, T8 extends Proxymi.SuperConstructor, T9 extends Proxymi.SuperConstructor, T10 extends Proxymi.SuperConstructor, > ( type1: T1, type2: T2, type3: T3, type4: T4, type5: T5, type6: T6, type7: T7, type8: T8, type9: T9, type10: T10, ): Proxymi.Like & { new ( args1?: ConstructorParameters, args2?: ConstructorParameters, args3?: ConstructorParameters, args4?: ConstructorParameters, args5?: ConstructorParameters, args6?: ConstructorParameters, args7?: ConstructorParameters, args8?: ConstructorParameters, args9?: ConstructorParameters, args10?: ConstructorParameters, ): Proxymi.ClusteredPrototype; new ( ...args: ( | Proxymi.SuperConstructorInvokeInfo | Proxymi.SuperConstructorInvokeInfo | Proxymi.SuperConstructorInvokeInfo | Proxymi.SuperConstructorInvokeInfo | Proxymi.SuperConstructorInvokeInfo | Proxymi.SuperConstructorInvokeInfo | Proxymi.SuperConstructorInvokeInfo | Proxymi.SuperConstructorInvokeInfo | Proxymi.SuperConstructorInvokeInfo | Proxymi.SuperConstructorInvokeInfo )[] ): Proxymi.ClusteredPrototype; } & ( new (...args: any[]) => & InstanceType & InstanceType & InstanceType & InstanceType & InstanceType & InstanceType & InstanceType & InstanceType & InstanceType & InstanceType & Proxymi.ClusteredPrototype ) & Proxymi.ClusteredConstructor;