/// <reference types="react" />
import { XDataDefinition } from "../../Common/Data/XDataDefinition";
import { BaseExpression } from "../BaseExpression";
import { IRegistrationData, RegistrationFilter } from "../../Common/IRegistrationData";
import { IDataDefinition } from "../../Common/Data/Definitions/IDataDefinition";
export declare class RegistrationData implements IRegistrationData<BaseExpression> {
    category: string;
    name: string;
    icon: JSX.Element;
    valueType?: IDataDefinition;
    example: BaseExpression;
    common: boolean;
    include?: RegistrationFilter;
    constructor(example: BaseExpression, category: string, name: string, icon: JSX.Element, valueType?: IDataDefinition, common?: boolean, include?: RegistrationFilter);
    create(): BaseExpression;
}
export declare class ExpressionRegistration {
    static registrations: {
        [key: string]: RegistrationData;
    };
    static registerExpression(example: BaseExpression, category: string, name: string, icon: JSX.Element, valueType?: IDataDefinition, common?: boolean, include?: RegistrationFilter): void;
    static getCategories(data: XDataDefinition): string[];
    static getExpressionByType(typeName: string, data: XDataDefinition): RegistrationData | undefined;
    static getExpressionsByCategory(category: string, data: XDataDefinition): RegistrationData[];
    static getCommonExpressions(data: XDataDefinition): RegistrationData[];
    static getExpressionByName(name: string): RegistrationData | undefined;
}
export declare function GetExpressionFromData(data: object): BaseExpression | undefined;
export declare function RegisterExpression(exampleExpression: BaseExpression, category: string, icon: JSX.Element, valueType?: IDataDefinition, common?: boolean, include?: RegistrationFilter): void;
