import { Component, ComponentProps, ComponentPropsWithRef, ReactElement, RefObject } from 'react';
import Button from '../Button';
import FormField from '../FormField';
import { PasswordMeterProps } from './PasswordMeter';
import './FormFieldPassword.less';
export type FormFieldPasswordProps = {
    /**
     * Is show button hidden?
     * @since 0.0.59
     */
    hideShowButton?: boolean;
    /**
     * Is copy button hidden?
     * @since 3.41.3
     */
    hideCopyButton?: boolean;
    /**
     * Is generate button hidden?
     * @since 0.0.59
     */
    hideGenerateButton?: boolean;
    /**
     * Is password meter hidden?
     * @since 0.0.59
     */
    hidePasswordMeter?: boolean;
    /**
     * Additional props for password meter. See [Popover](#!/Popover) for more information.
     * @since 1.5.6
     */
    passwordMeterProps?: Omit<PasswordMeterProps, 'children' | 'value' | 'visible' | 'onClose' | 'targetRef'>;
    /**
     * Size of the control
     * @since 1.5.6
     */
    size: 'md' | 'lg' | 'xl' | 'fill';
    /**
     * The browser will automatically focus on the component upon rendering the screen
     * @since 1.9.0
     */
    autoFocus?: boolean;
    /**
     * Prevent password autocompletion.
     * @since 2.5.1
     */
    autoComplete?: 'new-password';
    /**
     * A render function for customizing the copy password button.
     * @since 3.41.3
     */
    copyButton?: (copyButtonProps: ComponentPropsWithRef<typeof Button>) => ReactElement;
    /**
     * A render function for customizing the password generation button.
     * @since 3.13.0
     */
    generateButton?: (generateButtonProps: ComponentPropsWithRef<typeof Button>) => ReactElement;
    /**
     * @ignore
     */
    className?: string;
    /**
     * @ignore
     */
    baseClassName?: string;
} & ComponentProps<typeof FormField>;
type FormFieldPasswordState = {
    visible: boolean;
    copyToastVisible: boolean;
    passwordMeterVisible: boolean;
    passwordGenerated: boolean;
};
/**
 * `FormFieldPassword` component provides secure way to enter a password.
 * @since 0.0.58
 */
declare class FormFieldPassword extends Component<FormFieldPasswordProps, FormFieldPasswordState> {
    static defaultProps: {
        hideShowButton: boolean;
        copyButton: undefined;
        generateButton: undefined;
        hideCopyButton: boolean;
        hideGenerateButton: boolean;
        hidePasswordMeter: boolean;
        passwordMeterProps: {};
        size: string;
        autoFocus: undefined;
        autoComplete: undefined;
        className: undefined;
        baseClassName: string;
    };
    state: {
        copyToastVisible: boolean;
        visible: boolean;
        passwordMeterVisible: boolean;
        passwordGenerated: boolean;
    };
    targetRef: RefObject<HTMLSpanElement>;
    handleToggleClick: () => void;
    handleClosePasswordMeter: () => void;
    handleBlur: () => void;
    handleCopyToClipboard: (contentToCopy: string) => void;
    renderCopyButton({ value, isDisabled }: {
        value: string;
        isDisabled: () => boolean;
    }): import("react/jsx-runtime").JSX.Element;
    renderGenerateButton({ setValue, isDisabled, }: {
        setValue: (value: any) => void;
        isDisabled: () => boolean;
    }): import("react/jsx-runtime").JSX.Element;
    render(): import("react/jsx-runtime").JSX.Element;
}
export default FormFieldPassword;
