import { ReactNode, MouseEvent as ReactMouseEvent, ButtonHTMLAttributes } from 'react';
import type { DefaultAttributes } from '../types';
export declare type ButtonVariants = 'primary' | 'secondary' | 'outline' | 'ghost' | 'inverse' | 'inverse-ghost';
export declare type ButtonSizes = 'xSmall' | 'small-expressive' | 'small-productive' | 'medium' | 'large';
export declare type ButtonTypes = 'button' | 'reset' | 'submit';
export declare type ButtonIconPosition = 'leading' | 'trailing';
declare type ButtonCustomProps = DefaultAttributes & {
    children: ReactNode;
    variant?: ButtonVariants;
    size?: ButtonSizes;
    disabled?: boolean;
    isLoading?: boolean;
    type?: ButtonTypes;
    onClick?: (e: ReactMouseEvent<HTMLButtonElement, MouseEvent>) => void;
    fullWidth?: boolean;
    icon?: ReactNode;
    iconPosition?: ButtonIconPosition;
    margin?: string;
};
export declare type ButtonProps = ButtonHTMLAttributes<HTMLButtonElement> & ButtonCustomProps;
export {};
