import React from "react"; interface OperationAction { tooltip: string; targetPath?: string; } export interface Operations { actions: { clone?: OperationAction; visibility?: OperationAction; delete?: OperationAction; }; } type JsonLogicVar = { var: string; }; type JsonLogicConst = { const: any; }; type JsonLogicOperation = { [key: string]: any[]; }; type JsonLogicValue = JsonLogicVar | JsonLogicConst | JsonLogicOperation; interface UpdateStrategy { when: string[]; keepFields: string[]; } interface EffectConfig { dependencies: string[]; handler: string; params: Record; updateStrategy?: UpdateStrategy; } type VisibilityCondition = JsonLogicOperation; interface OptionsMapping { source: string; dependency: string; transform?: { map: [JsonLogicValue, Record]; }; } export interface Option { label: string; value: string | number; } export interface SetterConfig { name: string; title: string; setter: "string" | "number" | "boolean" | "select" | "json" | "colorPicker"; options?: Option[] | { mapping: OptionsMapping; }; min?: number; max?: number; step?: number; priority?: number; effects?: EffectConfig; visible?: VisibilityCondition; } export interface CompositeField { name: string; title: string; fields: Field[]; operations?: Operations; } export type Field = string | CompositeField; type FormLayout = "horizontal" | "vertical" | "inline"; type LabelAlign = "left" | "right"; interface FormItemLayout { labelCol?: { span?: number; offset?: number; }; wrapperCol?: { span?: number; offset?: number; }; } interface LayoutItem { name: string; title: string; fields: Field[]; operations?: Operations; } export interface setterLayout { name: string; title: string; items: LayoutItem[]; formLayout?: { layout?: FormLayout; labelAlign?: LabelAlign; labelWidth?: number; labelCol?: FormItemLayout["labelCol"]; wrapperCol?: FormItemLayout["wrapperCol"]; colon?: boolean; requiredMark?: boolean | "optional"; }; } interface SetterProps { config: SetterConfig; value: any; onChange: (value: any) => void; } export declare const Setter: React.FC; export {};