import * as React from 'react';
import { VariantProps } from 'class-variance-authority';
import * as class_variance_authority_types from 'class-variance-authority/types';
import { Button } from '../button/index.js';
import { Input } from '../input/index.js';
import { Textarea } from '../textarea/index.js';

type InputGroupProps = React.ComponentProps<"div"> & {
    invalid?: boolean;
};
declare function InputGroup({ className, invalid, ...props }: InputGroupProps): React.JSX.Element;

declare const inputGroupAddonVariants: (props?: {
    align?: "inline-start" | "inline-end" | "block-end" | "block-start";
} & class_variance_authority_types.ClassProp) => string;

declare const inputGroupButtonVariants: (props?: {
    size?: "sm" | "xs" | "icon-xs" | "icon-sm";
} & class_variance_authority_types.ClassProp) => string;

type InputGroupAddonVariantsProps = VariantProps<typeof inputGroupAddonVariants>;
type InputGroupAddonAlignType = NonNullable<InputGroupAddonVariantsProps["align"]>;
type InputGroupButtonVariantsProps = VariantProps<typeof inputGroupButtonVariants>;
type InputGroupButtonSizeType = NonNullable<InputGroupButtonVariantsProps["size"]>;

type InputGroupAddonProps = React.ComponentProps<"div"> & {
    align?: InputGroupAddonAlignType;
};
declare function InputGroupAddon({ className, align, ...props }: InputGroupAddonProps): React.JSX.Element;

type InputGroupButtonProps = Omit<React.ComponentProps<typeof Button>, "size"> & {
    size?: InputGroupButtonSizeType;
};
declare function InputGroupButton({ className, type, variant, size, ...props }: InputGroupButtonProps): React.JSX.Element;

type InputGroupInputProps = React.ComponentProps<typeof Input>;
declare function InputGroupInput({ className, ...props }: InputGroupInputProps): React.JSX.Element;

type InputGroupTextProps = React.ComponentProps<"span">;
declare function InputGroupText({ className, ...props }: InputGroupTextProps): React.JSX.Element;

type InputGroupTextareaProps = React.ComponentProps<typeof Textarea>;
declare function InputGroupTextarea({ className, ...props }: InputGroupTextareaProps): React.JSX.Element;

export { InputGroup, InputGroupAddon, type InputGroupAddonAlignType, type InputGroupAddonProps, InputGroupButton, type InputGroupButtonProps, type InputGroupButtonSizeType, InputGroupInput, type InputGroupInputProps, type InputGroupProps, InputGroupText, type InputGroupTextProps, InputGroupTextarea, type InputGroupTextareaProps };
