import { ExpressionRuleEditorBase } from "../Expressions/ExpressionRuleEditorBase";
import { ExpressionRule } from "@appglue/common/dist/Expressions/ExpressionRule";
import { ReactNode } from "react";
export declare class ExpressionRuleEditorRegistrationData {
    typeName: string;
    editorPrototype: ExpressionRuleEditorBase;
    icon: JSX.Element;
    constructor(editorPrototype: ExpressionRuleEditorBase, typeName: string, icon: JSX.Element);
    create(rule: ExpressionRule): ExpressionRuleEditorBase;
}
export declare class ExpressionRuleEditorRegistration {
    static registrations: {
        [key: string]: ExpressionRuleEditorRegistrationData;
    };
    static registerExpressionEditor(example: ExpressionRuleEditorBase, expressionRule: ExpressionRule, icon: JSX.Element): void;
    static getExpressionByTypeName(typeName: string): ExpressionRuleEditorRegistrationData | undefined;
}
export declare function RegisterExpressionRuleEditor(exampleExpression: ExpressionRuleEditorBase, forExpressionRule: ExpressionRule, icon: JSX.Element): void;
export declare function RenderExpressionRule(rule: ExpressionRule | undefined): JSX.Element | ReactNode | null;
export declare function GetExpressionRuleIcon(type: string): JSX.Element;
