import { Constructor } from "./main.js";
/**
 * Returns a function that returns `new X(...args)`
 */
export declare const classWrapper: <T = any, Signature extends any[] = any[]>(X: new (...args: Signature) => T) => (...args: Signature) => T;
/**
 * Returns a method that returns `this[delegateProp][delegateMethodName](...delegateArgs)`
 */
export declare const delegateMethod: (delegatePropName: string) => (delegateMethodName: string) => (...delegateArgs: any[]) => any;
/**
 * Returns a method that returns `this[delegatePropName][propName]`
 */
export declare const delegateProperty: (delegatePropName: string) => (propName: string) => () => any;
/**
 * Calls `extendPrototype` for each of the passed `Constructor`s `classes`,
 * that are removed their `.constructor` property from.
 *
 * Useful for multiple inheritance and mixin pattern
 */
export declare const mixin: (Extended: Constructor, classes: Constructor[]) => void;
/**
 * Returns the copy of the given object with the `.constructor` property removed
 */
export declare const withoutConstructor: (object: object) => object;
/**
 * Returns a function that returns `called[delegatePropName][delegateMethodName].call(called, ...delegateArgs)`
 */
export declare const calledDelegate: (delegatePropName: string) => (delegateMethodName: string) => (called: any, ...delegateArgs: any[]) => any;
