import React from 'react';
import { ToolbarItemProps } from '../common/toolbar-item';
import { UiState } from '@kepler.gl/types';
import { BaseProps } from '../common/icons';
type ActionItem = {
    id: string;
    label?: string;
    blank?: boolean;
    href?: string;
    tooltip?: string;
    iconComponent: React.ComponentType<Partial<BaseProps>>;
    iconComponentProps?: BaseProps;
    dropdownComponent?: React.ComponentType<DropdownComponentProps>;
    onClick?: () => void;
};
type PanelActionProps = {
    item: ActionItem;
    showExportDropdown: (string: any) => void;
};
type PanelHeaderDropdownProps = {
    items: ToolbarItemProps[];
    show?: boolean;
    onClose: () => void;
    id: string;
};
type LogoComponentProps = {
    appName: string;
    appWebsite: string;
    version: string;
};
type DropdownCallbacks = {
    logoComponent?: React.FC<LogoComponentProps> | React.ComponentType<LogoComponentProps>;
    onExportImage: () => void;
    onExportData: () => void;
    onExportConfig?: () => void;
    onExportMap: () => void;
    onSaveToStorage: (() => void) | null;
    onSaveAsToStorage: (() => void) | null;
    onSaveMap?: () => void;
    onShareMap: (() => void) | null;
};
type Item = {
    label: string;
    icon: React.ComponentType<Partial<BaseProps>>;
    key: string;
    onClick: (p: DropdownComponentProps) => (() => void) | null;
};
type DropdownComponentProps = {
    show: boolean;
    onClose: () => void;
    items?: Item[];
} & DropdownCallbacks;
export type PanelHeaderProps = {
    appName: string;
    appWebsite: string;
    version: string;
    visibleDropdown: UiState['visibleDropdown'];
    actionItems?: ActionItem[];
    showExportDropdown: (i: string) => void;
    hideExportDropdown: () => void;
} & DropdownCallbacks;
declare const PanelAction: React.FC<PanelActionProps>;
export { PanelAction };
export declare const PanelHeaderDropdownFactory: () => React.FC<PanelHeaderDropdownProps>;
export declare const SaveExportDropdownFactory: {
    (PanelHeaderDropdown: ReturnType<typeof PanelHeaderDropdownFactory>): React.FC<DropdownComponentProps> & {
        defaultItems: ToolbarItemProps[];
    };
    deps: (() => React.FC<PanelHeaderDropdownProps>)[];
};
export declare const CloudStorageDropdownFactory: {
    (PanelHeaderDropdown: ReturnType<typeof PanelHeaderDropdownFactory>): React.FC<DropdownComponentProps> & {
        defaultItems: DropdownComponentProps["items"];
    };
    deps: (() => React.FC<PanelHeaderDropdownProps>)[];
};
declare function PanelHeaderFactory(SaveExportDropdown: ReturnType<typeof SaveExportDropdownFactory>, CloudStorageDropdown: ReturnType<typeof CloudStorageDropdownFactory>): React.ComponentType<PanelHeaderProps>;
declare namespace PanelHeaderFactory {
    var deps: ({
        (PanelHeaderDropdown: ReturnType<typeof PanelHeaderDropdownFactory>): React.FC<DropdownComponentProps> & {
            defaultItems: ToolbarItemProps[];
        };
        deps: (() => React.FC<PanelHeaderDropdownProps>)[];
    } | {
        (PanelHeaderDropdown: ReturnType<typeof PanelHeaderDropdownFactory>): React.FC<DropdownComponentProps> & {
            defaultItems: DropdownComponentProps["items"];
        };
        deps: (() => React.FC<PanelHeaderDropdownProps>)[];
    })[];
}
export default PanelHeaderFactory;
