import * as tailwind_variants from 'tailwind-variants';
import { VariantProps } from 'tailwind-variants';
import * as tailwind_variants_dist_config_js from 'tailwind-variants/dist/config.js';

declare const buttonVariants: tailwind_variants.TVReturnType<{
    variant: {
        'brand-primary': string;
        'neutral-secondary': string;
        'neutral-tertiary': string;
    };
    size: {
        md: string;
        ml: string;
        lg: string;
        xl: string;
    };
    disabled: {
        true: string;
        false: string;
    };
    full: {
        true: string;
    };
    asIconOnly: {
        true: string;
    };
}, undefined, "\n    tracking inline-flex items-center justify-center gap-twopulse rounded-pill\n    border-quarterpulse border-[transparent] font-bold font-rdmodern text-threeandhalfpulse truncate", {
    responsiveVariants?: boolean | ("sm" | "md" | "lg" | "xl" | "2xl")[] | {
        size?: boolean | ("sm" | "md" | "lg" | "xl" | "2xl")[] | undefined;
        variant?: boolean | ("sm" | "md" | "lg" | "xl" | "2xl")[] | undefined;
        disabled?: boolean | ("sm" | "md" | "lg" | "xl" | "2xl")[] | undefined;
        full?: boolean | ("sm" | "md" | "lg" | "xl" | "2xl")[] | undefined;
        asIconOnly?: boolean | ("sm" | "md" | "lg" | "xl" | "2xl")[] | undefined;
    } | undefined;
} & tailwind_variants_dist_config_js.TWMConfig & {
    twMergeConfig: {
        extend: {
            classGroups: {
                'font-size': {
                    text: string[];
                }[];
                'border-width': {
                    border: string[];
                }[];
                '--tw-ring-inset': {
                    ring: string[];
                }[];
            };
        };
    };
}, {
    variant: {
        'brand-primary': string;
        'neutral-secondary': string;
        'neutral-tertiary': string;
    };
    size: {
        md: string;
        ml: string;
        lg: string;
        xl: string;
    };
    disabled: {
        true: string;
        false: string;
    };
    full: {
        true: string;
    };
    asIconOnly: {
        true: string;
    };
}, undefined, tailwind_variants.TVReturnType<{
    variant: {
        'brand-primary': string;
        'neutral-secondary': string;
        'neutral-tertiary': string;
    };
    size: {
        md: string;
        ml: string;
        lg: string;
        xl: string;
    };
    disabled: {
        true: string;
        false: string;
    };
    full: {
        true: string;
    };
    asIconOnly: {
        true: string;
    };
}, undefined, "\n    tracking inline-flex items-center justify-center gap-twopulse rounded-pill\n    border-quarterpulse border-[transparent] font-bold font-rdmodern text-threeandhalfpulse truncate", tailwind_variants_dist_config_js.TVConfig<{
    variant: {
        'brand-primary': string;
        'neutral-secondary': string;
        'neutral-tertiary': string;
    };
    size: {
        md: string;
        ml: string;
        lg: string;
        xl: string;
    };
    disabled: {
        true: string;
        false: string;
    };
    full: {
        true: string;
    };
    asIconOnly: {
        true: string;
    };
}, {
    variant: {
        'brand-primary': string;
        'neutral-secondary': string;
        'neutral-tertiary': string;
    };
    size: {
        md: string;
        ml: string;
        lg: string;
        xl: string;
    };
    disabled: {
        true: string;
        false: string;
    };
    full: {
        true: string;
    };
    asIconOnly: {
        true: string;
    };
}>, unknown, unknown, undefined>>;

/**
 * Representa as props de um botão primitivo, excluindo a propriedade 'size'.
 */
type PrimitiveButtonProps = Omit<React.ComponentProps<'button'>, 'size'>;
/**
 * Representa as props para o componente Button.
 */
type ButtonProps = PrimitiveButtonProps & VariantProps<typeof buttonVariants> & {
    /**
     * Indica se o botão está em um estado de carregamento.
     */
    loading?: boolean;
    /**
     * Indica que o botão vai ter uma largura de 100% do container.
     */
    full?: boolean;
};

export type { ButtonProps as B };
