import React from 'react';
import { Placement } from '../dropdown/dropdown';
import { DefaultIconKeys } from '../icon';
import './style.less';
export type ButtonType = 'primary' | 'secondary' | 'ghost' | 'danger' | 'link' | 'icon' | 'default';
export type ButtonHTMLType = 'submit' | 'button' | 'reset';
export type ButtonSize = 'large' | 'default' | 'small';
interface IButtonBasicProps<T> {
    type?: ButtonType;
    iconClass?: string;
    icon?: DefaultIconKeys | T;
    className?: string;
    loading?: boolean;
    ghost?: boolean;
    size?: ButtonSize;
    disabled?: boolean;
    block?: boolean;
}
interface MoreActionProps {
    more?: boolean;
    moreIconClass?: string;
    menu?: React.ReactNode;
    moreVisible?: boolean;
    placement?: Placement;
    onVisibleChange?: (visible: boolean) => void;
}
export type ButtonProps<T> = {
    htmlType?: ButtonHTMLType;
    onClick?: React.MouseEventHandler<HTMLElement>;
} & IButtonBasicProps<T> & MoreActionProps & Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'type' | 'onClick'>;
/**
 * @example
 * ```ts
 * <Button type='primary' | 'secondary' | 'ghost' | 'danger' | 'link' | 'icon'>click</Button>
 * // icon
 * <Button type='primary' icon='share'>click</Button>
 *
 * // or
 * <Button type='primary' iconClass=`${customPrefix} iconkey`>click</Button>
 *
 * // size
 * <Button size='large' | 'default' | 'small' type='primary' iconClass=`${customPrefix} iconkey`>click</Button>
 *
 * // more 点击后展开一个 dropdown
 * <Button more menu={(<div>
 *  <p>item1</p>
 *  <p>item1</p>
 *  </div>)}>click</Button>
 *
 * // 使用自定义 icon
 * <Button<'icon1' | 'icon2'> icon='icon1' type='icon' />
 * <Button<'icon1' | 'icon2'> iconClass=`${customPrefix} icon1` type='icon' />
 * ```
 */
export declare const Button: React.MemoExoticComponent<(<T extends string>({ children, loading, className, type, htmlType, size, ghost, onClick, disabled, block, iconClass, icon, more, moreIconClass, menu, moreVisible, placement, title, onVisibleChange, ...otherProps }: ButtonProps<T>) => React.ReactElement<ButtonProps<T>, string | React.JSXElementConstructor<any>>)>;
export {};
//# sourceMappingURL=index.d.ts.map