import React from 'react';
import type { IMapPair } from './MapPair';
import type { IPipeline } from '../../domain';
import './MapEditor.less';
export interface IMapEditorProps {
    addButtonLabel?: string;
    allowEmpty?: boolean;
    hiddenKeys?: string[];
    keyLabel?: string;
    label?: string;
    labelsLeft?: boolean;
    model: string | {
        [key: string]: string;
    };
    valueLabel?: string;
    onChange: (model: string | {
        [key: string]: string;
    }, duplicateKeys: boolean) => void;
    valueCanContainSpel?: boolean;
    pipeline?: IPipeline;
}
export interface IMapEditorState {
    backingModel: IMapPair[];
}
export declare class MapEditor extends React.Component<IMapEditorProps, IMapEditorState> {
    static defaultProps: Partial<IMapEditorProps>;
    constructor(props: IMapEditorProps);
    componentDidUpdate(prevProps: IMapEditorProps): void;
    private mapModel;
    private reduceModel;
    private validateUnique;
    private handleChanged;
    private onChange;
    private onDelete;
    private onAdd;
    render(): JSX.Element;
}
