import { KdsIconName } from '../accessories/Icon/types';
import { kdsButtonSize, kdsButtonVariant } from './enums';
export type KdsButtonSize = (typeof kdsButtonSize)[keyof typeof kdsButtonSize];
export type KdsButtonVariant = (typeof kdsButtonVariant)[keyof typeof kdsButtonVariant];
/**
 * Properties common to all button components
 */
export type KdsButtonCommonProps<TVariant extends KdsButtonVariant = KdsButtonVariant> = {
    size?: KdsButtonSize;
    disabled?: boolean;
    title?: string;
    variant?: TVariant;
};
/**
 * Helper types
 */
type LabelAndIcons = {
    label: string;
    leadingIcon?: KdsIconName;
    trailingIcon?: KdsIconName;
    ariaLabel?: never;
};
type LeadingIconOnly = {
    label?: never;
    leadingIcon: KdsIconName;
    trailingIcon?: never;
    ariaLabel: string;
};
export type WithLabelAndIcons = LabelAndIcons | LeadingIconOnly;
export type WithDestructive = {
    /**
     * If set to true, the button will prominently warn the user of a destructive action.
     */
    destructive?: boolean;
};
type WithSuccess = {
    /**
     * If set to true, the button will be styled as a success/positive action.
     */
    success?: boolean;
};
type WithError = {
    /**
     * If set to true, the button will be styled as an error/negative action.
     */
    error?: boolean;
};
type WithToggled = {
    /**
     * Represents the button's toggled state
     */
    toggled?: boolean;
};
type WithCorners = {
    /**
     * If set to "left" or "right", the button will have sharp corners on the specified side.
     */
    removeBorderRadius?: "left" | "right";
};
/**
 * Type for BaseButton component which supports all behaviors
 */
export type BaseButtonProps = KdsButtonCommonProps & WithLabelAndIcons & WithDestructive & WithSuccess & WithError & WithToggled & WithCorners;
export {};
//# sourceMappingURL=types.d.ts.map