import { IDataMemberAccessor } from "./DataMemberAccessor";
import { XDataType } from "./Data/XDataType";
import { IDataDefinition } from "./Data/Definitions/IDataDefinition";
import { ObjectDataDefinition } from "./Data/Definitions/ObjectDataDefinition";
import { XDataDefinition } from "./Data/XDataDefinition";
import { ValidationIssue } from "./IDesignValidationProvider";
export declare class DataUtilities {
    static reactProperties: string[];
    static compare(v1: object, v2: object): boolean;
    static clone(value: object): object;
    static cloneWithoutReact(value: object, alsoExclude?: string[]): object;
    static spreadData(value: object, dataToSpread: object, exclude?: string[]): void;
    static spreadDeepData(value: object, dataToSpread: object, exclude?: string[]): void;
    static spreadDataWithoutFunction(value: object, dataToSpread: object, exclude?: string[]): void;
    static generateUniqueId(): string;
    static isValidDate(possibleDate: any): boolean;
    static isValidFile(possibleFile: object): boolean;
    static getElapsedTime(startTime: Date, endTime: Date): string;
    static compareObjectStructure(object: object, matchesObject: object): boolean;
    static isAssignable(val: any, toVal: any): boolean;
    static isDateString(checkVal: string): boolean;
    static getDateFromString(s: string): Date;
    static splitPath(path: string): IDataMemberAccessor[];
    static get(from: object, path: string, defaultvalue?: any): any;
    static set(from: object, path: string, value: any, throwExceptionIfTargetIsNull?: boolean, notCheckType?: boolean): void;
    static getFieldFromDataDefinitionByProperty(fields: Array<object>, path: string, propertyName: string): object | null;
    static filterFieldsByProperty(fields: Array<object>, propertyName: string, searchStr: string): Array<object>;
    static createDataByType(type: XDataType, name?: string): IDataDefinition;
    static getAllSubFieldsByType(data: {
        fields: IDataDefinition[];
    }, type: XDataType): IDataDefinition[];
    static getAllDeepSubFieldsByType(data: {
        fields: IDataDefinition[];
    }, type: XDataType, basepath?: string): {
        path: string | undefined;
        def: IDataDefinition;
    }[];
    static isIDataDefinition(def: IDataDefinition | XDataDefinition): boolean;
    static convertArrayObjectToObjectByProperty(arr: Array<object>, property: string): {
        [key: string]: object;
    };
    static compareStructureToStructure(required: ObjectDataDefinition, dataToCompare: ObjectDataDefinition): boolean;
    static compareStructureToPath(required: ObjectDataDefinition, dataToCompare: XDataDefinition, path: string): boolean;
    static compareValueToDataDefinition(value: any, dataDefinition: IDataDefinition): ValidationIssue | undefined;
    static changeDataDefinitionTypeByPath(data: XDataDefinition, totype: XDataType, path: string): void;
    static addDataDefinitionByPath(data: XDataDefinition, totype: XDataType, path: string, name?: string): void;
    static validateDataDefinitionNameByPath(data: XDataDefinition, path: string, name: string, availableCount?: number): string | null;
    static changeDataDefinitionNameByPath(data: XDataDefinition, newname: string, path: string): void;
    static changeFieldPositionByPath(data: XDataDefinition, newindex: number, path: string): void;
    static removeFieldByPath(data: XDataDefinition, path: string): void;
    static getFieldsLevel(data: XDataDefinition, path: string, extraField?: number): number;
    static checkType(value: any, dataType: IDataDefinition): boolean;
    static defRefSchema(schema: object): Promise<string>;
    static getObjectDisplayText(o: object): string;
    static summerizeText(text: string, maxLen: number): string;
}
