import * as React from 'react';
import { KIND, SIZE, SHAPE } from './constants';
import type { Override } from '../helpers/overrides';
import type { ReactNode, SyntheticEvent } from 'react';
export declare type ButtonOverrides = {
    Root?: Override;
    BaseButton?: Override;
    StartEnhancer?: Override;
    EndEnhancer?: Override;
    LoadingSpinnerContainer?: Override;
    LoadingSpinner?: Override;
};
export declare type CustomColors = {
    backgroundColor: string;
    color: string;
};
export declare type ButtonProps = {
    children?: ReactNode;
    colors?: CustomColors;
    disabled?: boolean;
    /** A helper rendered at the end of the button. */
    endEnhancer?: React.ReactNode | React.ComponentType<any>;
    /** Show loading button style and spinner. */
    isLoading?: boolean;
    /** Indicates that the button is selected */
    isSelected?: boolean;
    /** Defines the kind (purpose) of a button */
    kind?: keyof typeof KIND;
    onClick?: (a: SyntheticEvent<HTMLButtonElement>) => unknown;
    overrides?: ButtonOverrides;
    /** Defines the shape of the button */
    shape?: keyof typeof SHAPE;
    /** Defines the size of the button */
    size?: keyof typeof SIZE;
    /** A helper rendered at the start of the button. */
    startEnhancer?: React.ReactNode | React.ComponentType<any>;
    type?: 'submit' | 'reset' | 'button';
};
export declare type SharedStyleProps = {
    $colors?: CustomColors;
    $kind?: keyof typeof KIND;
    $isSelected?: boolean;
    $shape?: keyof typeof SHAPE;
    $size?: keyof typeof SIZE;
    $isLoading?: boolean;
    $disabled?: boolean;
    $isFocusVisible?: boolean;
};
