import type { JsonSchema } from "@jsonforms/core";
import type { RankedTester } from "@jsonforms/core/src/testers/testers";
import type { JsonFormsInterface, JsonFormsUISchema } from "../models";
export type { JsonFormsInterface, JsonFormsUISchema };
export declare const layoutTools: (import("./labelTool").LabelTool | import("./layoutTool").VerticalLayout | import("./ListWithDetailTool").ListWithDetailTool | import("./LayoutRefTool").LayoutRefTool)[];
export declare const controlTools: (import("./referenceTool").ReferenceTool | import("./combinatorTool").CombinatorTool | import("./ArrayTool").ArrayTool | import("./SelectTool").SelectTool | import("./controlTool").ControlTool | import("./ObjectTool").ObjectTool | import("./constTool").ConstTool)[];
export interface ToolInterface {
    uuid: string;
    propertyName: string;
    isRequired: boolean;
    schema: JsonSchema;
    uischema: JsonFormsUISchema | any;
    tester: RankedTester | undefined;
    importer: () => any;
    optionDataPrepare: (context: ToolContext) => Record<string, any>;
    optionDataUpdate: (context: ToolContext, data: Record<string, any>) => void;
    optionJsonforms: (context: ToolContext) => Promise<JsonFormsInterface | undefined>;
    /** :TODO add cloneWithSchema(schema,uischema) **/
    clone: () => ToolInterface;
    toolbarOptions: () => Record<string, any>;
    childs: ToolInterface[];
}
export interface ToolContext {
    builder?: string;
    schemaReadOnly?: string;
}
