import { type ComponentPropsWithoutRef, type ReactNode } from "react";
export interface DataMapperField {
    /** Stable key — also used as the inserted token path unless `path` is provided. */
    key: string;
    /** Display label. */
    label: string;
    /** Optional path inserted into the expression (e.g. "address.city"). Defaults to `key`. */
    path?: string;
    /** Field type — drives the type-pill color. */
    type?: string;
    /** API name annotation shown after the label. */
    apiName?: string;
    /** Mark as required (red asterisk). */
    required?: boolean;
    /** Nested fields. Objects/arrays expand "For Each Record" UI. */
    children?: DataMapperField[];
    /** Mark as an array (renders "For Each Record" toggle in target column). */
    isArray?: boolean;
}
export interface DataMapping {
    /** Target field key. */
    target: string;
    /** Source expression (path, literal, or function call). */
    expression: string;
}
export interface DataMapperFunction {
    /** Identifier used to insert the function — e.g. "uppercase". */
    key: string;
    /** Display label, e.g. "Uppercase". */
    label: string;
    /** Short description shown in the sidebar. */
    description?: string;
    /** Inserted snippet, e.g. "uppercase(${1})". Defaults to `${key}()`. */
    snippet?: string;
    /** Category for grouping in the sidebar. */
    category?: string;
}
export type DataMapperDisplay = "all" | "mapped" | "unmapped" | "required";
export interface DataMapperProps extends Omit<ComponentPropsWithoutRef<"div">, "onChange" | "title"> {
    /** Header title. */
    title?: ReactNode;
    /** Target schema — every field shown as a row in the main grid. */
    targetFields: DataMapperField[];
    /** Source schema browsed in the side panel. */
    sourceFields?: DataMapperField[];
    /** Optional pre-built functions (uppercase, lowercase, concat, etc.). */
    functions?: DataMapperFunction[];
    /** Optional pre-defined variables. */
    variables?: DataMapperField[];
    /** Current mappings: array of `{ target, expression }`. */
    mappings: DataMapping[];
    onChange: (mappings: DataMapping[]) => void;
    /** Display filter (all/mapped/unmapped/required). */
    defaultDisplay?: DataMapperDisplay;
    /** Show Auto-match button. */
    showAutoMatch?: boolean;
    /** Show Save / Close buttons. */
    showSaveClose?: boolean;
    onSave?: () => void;
    onClose?: () => void;
    /** Sidebar starts open. */
    defaultSidebarOpen?: boolean;
    className?: string;
}
export declare const DataMapper: import("react").ForwardRefExoticComponent<DataMapperProps & import("react").RefAttributes<HTMLDivElement>>;
//# sourceMappingURL=DataMapper.d.ts.map