/// <reference types="react" />
import { IntentType } from '../../../Common/theming/types';
import { Tooltip } from '../../Display/Tooltip';
import { ArcheIconName } from '../../../Common/theming/icons';
import { WithThemeProps } from '../../../Common/theming/withTheme';
export declare type Position = 'left' | 'right' | 'none';
export interface UpButtonState {
    isToggled?: boolean;
    isProcessing?: boolean;
    prevProps?: UpButtonProps;
}
export declare const fontSizeMap: {
    xsmall: number;
    small: number;
    medium: number;
    large: number;
    xlarge: number;
};
export declare const buttonSizeMap: {
    normal: string;
    icon: string;
    auto: string;
    full: string;
};
export declare type FontSize = 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge';
export declare type ButtonWidth = 'normal' | 'icon' | 'auto' | 'full';
export declare type ButtonHeight = 'xsmall' | 'small' | 'normal' | 'large';
export declare type ActionType = ArcheIconName;
export declare type IconPosition = 'none' | 'left' | 'right';
export declare type DropDownType = 'none' | 'up' | 'down' | 'element';
export interface Action {
    onClick: (e: React.MouseEvent<HTMLButtonElement>) => void;
    iconName?: any;
    tooltip?: string | Tooltip;
    libelle: string;
    actionType?: ActionType;
    intent?: IntentType;
}
export interface Separator {
    size?: number;
}
export interface CommonProps extends WithThemeProps {
    color?: string;
    backgroundColor?: string;
    borderColor?: string;
    fontSize?: FontSize;
    disabled?: boolean;
    shadow?: boolean;
    rounded?: boolean;
    rotate?: boolean;
    actionType?: ActionType;
    iconName?: ArcheIconName;
    iconSize?: number;
    iconPosition?: IconPosition;
    intent?: IntentType;
    width?: ButtonWidth;
    height?: ButtonHeight;
    tooltip?: string | Tooltip;
    extraActions?: Array<Action | Separator>;
    dropDown?: DropDownType;
    isProcessing?: boolean;
    isToggled?: boolean;
    type?: 'button' | 'submit' | 'reset';
    borderless?: boolean;
}
export interface UpButtonProps extends CommonProps {
    onClick?: (e: React.MouseEvent<HTMLButtonElement>) => void | Promise<any>;
    className?: string;
    name?: string;
}
export interface UpButtonStyledProps extends UpButtonProps {
    className?: string;
    dataFor?: string;
    isToggled?: boolean;
    isProcessing?: boolean;
}
export interface UpButtonState {
    isToggled?: boolean;
    isProcessing?: boolean;
    prevProps?: UpButtonProps;
}
