import type { ConfigProviderProps, Variant } from '../../config-provider';
type VariantComponents = keyof Pick<ConfigProviderProps, 'input' | 'inputPassword' | 'inputSearch' | 'otp' | 'inputNumber' | 'textArea' | 'mentions' | 'select' | 'cascader' | 'treeSelect' | 'datePicker' | 'timePicker' | 'rangePicker' | 'card' | 'button' | 'tag' | 'divider' | 'steps' | 'alert' | 'timeline'>;
type ComponentVariant<Component extends VariantComponents = VariantComponents> = NonNullable<NonNullable<ConfigProviderProps[Component]>['variant']>;
type LegacyVariantComponents = {
    [Component in VariantComponents]: ComponentVariant<Component> extends Variant ? Component : never;
}[VariantComponents];
interface VariantOptions<T extends readonly string[]> {
    variants: T;
    defaultVariant: T[number];
}
type VariantResult<T extends string> = [T, boolean, boolean];
interface UseVariant {
    <const T extends readonly string[]>(component: VariantComponents, variant: string | undefined, options: VariantOptions<T>): VariantResult<T[number]>;
    (component: LegacyVariantComponents, variant?: Variant, legacyBordered?: boolean, fallbackComponent?: LegacyVariantComponents): VariantResult<Variant>;
}
declare const _default: UseVariant;
export default _default;
