import { TCdsIconsName } from '@central-design-system/icons';
import { EventProp } from '../utils';
import { ComputedRef, PropType } from 'vue';
export type TFieldTypes = typeof allowedFieldType[number];
export interface IFieldProps {
    active: boolean;
    autofocus: boolean;
    prefix: string | undefined;
    suffix: string | undefined;
    prependInnerIcon: TCdsIconsName | undefined;
    appendInnerIcon: TCdsIconsName | undefined;
    type: TFieldTypes;
    role: string | undefined;
    placeholder: string | undefined;
    counter: boolean;
    disabled: boolean;
    limit: number | undefined;
    clearable: boolean;
    clearLabel: string;
    persistentClearable: boolean;
    'onClick:appendInner': EventProp | undefined;
    'onClick:prependInner': EventProp | undefined;
}
export interface IUseField {
    hasPrependInnerIcon: ComputedRef<boolean>;
    hasAppendInnerIcon: ComputedRef<boolean>;
    fieldClasses: ComputedRef<Record<string, boolean>>;
    fieldProps: string[];
    handleClickPrependInner: (event: MouseEvent) => void;
    handleClickAppendInner: (event: MouseEvent) => void;
}
export declare const allowedFieldType: readonly ["text", "password", "email", "number", "tel", "url"];
export declare const makeFieldProps: <Defaults extends {
    active?: unknown;
    autofocus?: unknown;
    prefix?: unknown;
    suffix?: unknown;
    prependInnerIcon?: unknown;
    appendInnerIcon?: unknown;
    type?: unknown;
    role?: unknown;
    placeholder?: unknown;
    counter?: unknown;
    limit?: unknown;
    clearable?: unknown;
    clearLabel?: unknown;
    persistentClearable?: unknown;
    'onClick:prependInner'?: unknown;
    'onClick:appendInner'?: unknown;
} = {}>(defaults?: Defaults | undefined) => import('../utils').AppendDefault<{
    /**
     * Активный элемент
     */
    active: {
        type: PropType<boolean>;
        default: boolean;
    };
    /**
     * Автофокус
     */
    autofocus: {
        type: PropType<boolean>;
        default: boolean;
    };
    /**
     * Добавить строку внутрь поля перед значением
     */
    prefix: {
        type: PropType<string>;
        default: undefined;
    };
    /**
     * Добавить строку внутрь поля после значения
     */
    suffix: {
        type: PropType<string>;
        default: undefined;
    };
    /**
     * Иконка внутри элемента перед значением поля
     */
    prependInnerIcon: {
        type: PropType<TCdsIconsName>;
        default: undefined;
        validator: (value: TCdsIconsName) => boolean;
    };
    /**
     * Иконка внутри элемента после значения поля
     */
    appendInnerIcon: {
        type: PropType<TCdsIconsName>;
        default: undefined;
        validator: (value: TCdsIconsName) => boolean;
    };
    /**
     * Тип поля
     */
    type: {
        type: PropType<TFieldTypes>;
        default: string;
        validator: (value: TFieldTypes) => boolean;
    };
    /**
     * Роль поля
     */
    role: {
        type: PropType<string>;
        default: undefined;
    };
    /**
     * Плейсхолдер поля
     */
    placeholder: {
        type: PropType<string>;
        default: undefined;
    };
    /**
     * Счетчик введенных символов
     */
    counter: {
        type: PropType<boolean>;
        default: boolean;
    };
    /**
     * Ограничение ввода по количеству символов
     */
    limit: {
        type: PropType<number>;
        default: undefined;
    };
    /**
     * Очищаемое поле
     */
    clearable: {
        type: PropType<boolean>;
        default: boolean;
    };
    /**
     * Лейбл для кнопки очистки поля ввода
     */
    clearLabel: {
        type: PropType<string>;
        default: string;
    };
    /**
     * Всегда показывать иконку очистки поля
     */
    persistentClearable: {
        type: PropType<boolean>;
        default: boolean;
    };
    /**
     * Событие клика по иконке внутри элемента перед значением поля
     */
    'onClick:prependInner': {
        type: PropType<EventProp>;
        default: undefined;
    };
    /**
     * Событие клика по иконке внутри элемента после значения поля
     */
    'onClick:appendInner': {
        type: PropType<EventProp>;
        default: undefined;
    };
}, Defaults>;
export declare function useField(props: IFieldProps, slots: Record<string, unknown>, name: string): IUseField;
