import React, { ComponentType, MouseEventHandler, ChangeEventHandler } from 'react';
import PanelHeaderActionFactory from '../panel-header-action';
import { RGBColor } from '@kepler.gl/types';
import { BaseProps } from '../../common/icons';
export type LayerLabelEditorProps = {
    layerId: string;
    label?: string;
    onEdit: ChangeEventHandler;
    onFocus: ChangeEventHandler;
    onBlur: ChangeEventHandler;
};
export type LayerTitleSectionProps = {
    layerType?: string | null;
    layerId: string;
    label?: string;
    onUpdateLayerLabel: ChangeEventHandler;
    onFocus: ChangeEventHandler;
    onBlur: ChangeEventHandler;
};
export type LayerPanelHeaderProps = {
    layerId: string;
    isVisible: boolean;
    isValid: boolean;
    onToggleVisibility: MouseEventHandler;
    onUpdateLayerLabel: ChangeEventHandler;
    onToggleEnableConfig: MouseEventHandler;
    onRemoveLayer: MouseEventHandler;
    onZoomToLayer: MouseEventHandler;
    onDuplicateLayer: MouseEventHandler;
    onResetIsValid: MouseEventHandler;
    isConfigActive: boolean;
    showRemoveLayer?: boolean;
    label?: string;
    layerType?: string | null;
    allowDuplicate?: boolean;
    isDragNDropEnabled?: boolean;
    warning?: boolean;
    labelRCGColorValues?: RGBColor | null;
    actionIcons?: {
        remove: ComponentType<Partial<BaseProps>>;
        visible: ComponentType<Partial<BaseProps>>;
        hidden: ComponentType<Partial<BaseProps>>;
        enableConfig: ComponentType<Partial<BaseProps>>;
        disableConfig?: ComponentType<Partial<BaseProps>>;
        resetIsValid: ComponentType<Partial<BaseProps>>;
        duplicate: ComponentType<Partial<BaseProps>>;
        crosshairs: ComponentType<Partial<BaseProps>>;
    };
    listeners?: React.ElementType;
};
type HeaderActionSectionProps = {
    isEditingLabel: boolean;
};
export type LayerPanelHeaderActionSectionProps = LayerPanelHeaderProps & HeaderActionSectionProps;
export declare const DragHandle: React.FC<{
    className?: string;
    listeners?: any;
    children?: React.ReactNode;
}>;
export declare const LayerLabelEditor: React.FC<LayerLabelEditorProps>;
export declare function LayerTitleSectionFactory(): React.FC<LayerTitleSectionProps>;
export declare function LayerPanelHeaderActionSectionFactory(PanelHeaderAction: ReturnType<typeof PanelHeaderActionFactory>): React.FC<LayerPanelHeaderActionSectionProps>;
export declare namespace LayerPanelHeaderActionSectionFactory {
    var deps: (typeof PanelHeaderActionFactory)[];
}
export declare const HeaderWarning: ({ warning, id }: {
    warning: any;
    id: any;
}) => React.JSX.Element;
declare function LayerPanelHeaderFactory(LayerTitleSection: ReturnType<typeof LayerTitleSectionFactory>, LayerPanelHeaderActionSection: ReturnType<typeof LayerPanelHeaderActionSectionFactory>): React.FC<LayerPanelHeaderProps>;
declare namespace LayerPanelHeaderFactory {
    var deps: (typeof LayerPanelHeaderActionSectionFactory | typeof LayerTitleSectionFactory)[];
}
export default LayerPanelHeaderFactory;
