import { EventProp } from '../utils';
import { TCdsIconsName } from '@central-design-system/icons';
import { PropType, ComputedRef } from 'vue';
export interface IIconProps {
    prependIcon: TCdsIconsName | undefined;
    appendIcon: TCdsIconsName | undefined;
    'onClick:prepend'?: EventProp | undefined;
    'onClick:append'?: EventProp | undefined;
}
export interface IUseIcon {
    hasPrepend: ComputedRef<boolean>;
    hasAppend: ComputedRef<boolean>;
    iconClasses: ComputedRef<Record<string, boolean>>;
    handleClickPrepend: (event: MouseEvent) => void;
    handleClickAppend: (event: MouseEvent) => void;
}
export declare const makeIconProps: <Defaults extends {
    prependIcon?: unknown;
    appendIcon?: unknown;
} = {}>(defaults?: Defaults | undefined) => import('../utils').AppendDefault<{
    /**
     * Иконка в начале элемента
     */
    prependIcon: {
        type: PropType<TCdsIconsName>;
        default: undefined;
        validator: (value: TCdsIconsName) => boolean;
    };
    /**
     * Иконка в конце элемента
     */
    appendIcon: {
        type: PropType<TCdsIconsName>;
        default: undefined;
        validator: (value: TCdsIconsName) => boolean;
    };
}, Defaults>;
export declare const makeIconEvents: <Defaults extends {
    'onClick:prepend'?: unknown;
    'onClick:append'?: unknown;
} = {}>(defaults?: Defaults | undefined) => import('../utils').AppendDefault<{
    /**
     * Событие клика по иконке перед значением поля
     */
    'onClick:prepend': {
        type: PropType<EventProp>;
        default: undefined;
    };
    /**
     * Событие клика по иконке после значения поля
     */
    'onClick:append': {
        type: PropType<EventProp>;
        default: undefined;
    };
}, Defaults>;
export declare function useIcon(props: IIconProps, slots: Record<string, unknown>, name: string): IUseIcon;
