export declare class ObjectUtils {
    /**
     * Returns whether all given values exist: for all values it holds that they are not null nor undefined. Short-circuit check.
     * @param {any} values Rest parameters with all objects to check existence for.
     * @returns {boolean} True if ALL given values are not null nor undefined, otherwise false (if at least one value was null or undefined)
     */
    static AllExist(...values: any[]): boolean;
    /**
     * Copies all properties from object 'from' to object 'to'. Overwrites properties on object 'to' if property already exists.
     * Does not copy functions, only properties.
     * @param {Object} from The source object from which to copy all properties of to the 'to' object.
     * @param {Object} to The object to which the properties of the 'from' object will be copied.
     * @param {boolean} [allowUndefined = true] wether the 'to' object may be assigned null or undefined values to any of its properties.
     */
    static CopyPropertiesFrom<T>(from: Object, to: T, allowUndefined?: boolean): T;
    static DeepEquals(actual: any, expected: any): boolean;
    static ForOwnProperty(plainObject: any, callback: (propVal: any, key: string) => any): void;
    static GetClassName(objectOrClass: any): string;
    static GetShallowClone(originalObject: any, objectClass?: any): any;
    static GetDeepClone(originalObject: any, circular?: boolean): any;
    static IsEmpty(obj: any): boolean;
    static IsPlainObject(object: any): boolean;
    /**
     * Returns an instance of given class with data of given dataObject. Only works if that class has a default constructor without args.
     * Does not actually create a new object if it alread is an instance of that class.
     * @param {any} clazz A class that has a default constructor
     * @param {any} [dataObject] The object with data to copy to the new instance of the class
     * @returns {any} An object that is an instance of given class, with given data applied to it.
     */
    static MakeInstanceOf(clazz: any, dataObject?: any): any;
    static PickRandomPropertyValue(object: any): any;
    static ValueOrDefault(value: any, defaultReturnVal?: any): any;
    private static _isArguments;
    private static _isArgumentsWhenArgsClassNotSupported;
    private static _isArgumentsWhenArgsClassSupported;
    private static _isBuffer;
    private static _isUndefinedOrNull;
    private static _objEquiv;
    private static _supportsArgumentsClass;
}
