import type { JsonSchema } from "@jsonforms/core";
import type { RankedTester } from "@jsonforms/core";
import type { JsonFormsInterface, JsonFormsUISchema, ToolContext, ToolFinderInterface, ToolInterface } from "../models";
import { ToolEdge } from "../ToolEdge";
export declare abstract class AbstractTool implements ToolInterface {
    private readonly _uuid;
    propertyName: string;
    isRequired: boolean;
    edge: ToolEdge;
    /** @deprecated use edge.childs **/
    get childs(): ToolInterface[];
    /** @deprecated use edge.childs **/
    set childs(childs: ToolInterface[]);
    schema: JsonSchema;
    uischema: JsonFormsUISchema | any;
    constructor(uischemaType?: string);
    get uuid(): string;
    abstract clone(): ToolInterface;
    abstract importer(): any;
    abstract optionDataPrepare(context: ToolContext): Record<string, any>;
    abstract optionDataUpdate(context: ToolContext, data: Record<string, any>): void;
    abstract optionJsonforms(context: ToolContext): Promise<JsonFormsInterface | undefined>;
    abstract tester: RankedTester | undefined;
    toolbarOptions(): Record<string, any>;
    generateJsonSchema(): JsonSchema | undefined;
    generateUiSchema(): JsonFormsUISchema | undefined;
    initChilds(toolFinder: ToolFinderInterface, baseSchemaTool?: ToolInterface | undefined): ToolInterface[];
}
