import React from 'react';
import type { ButtonLinkAllowedValues } from '../../lib/types/button-link';
import type { PolymorphicPropsWithoutRef } from '../../lib/types/polymorphic-component';
import type { ThemeIn } from '../../lib/theming/Theme';
import type { CommonProps } from '../../internal/CommonWrapper';
import type { TGetRootNode } from '../../lib/rootNode';
export interface LinkInnerProps extends CommonProps {
    /** Ссылка меняет цвет на серый и становится недоступна для нажатия. */
    disabled?: boolean;
    /** Добавляет иконку слева от ссылки. */
    icon?: React.ReactElement;
    /** Добавляет иконку справа от ссылки. */
    rightIcon?: React.ReactElement;
    /** Стиль ссылки. */
    use?: 'default' | 'success' | 'danger' | 'grayed';
    /** @ignore */
    _button?: boolean;
    /** @ignore */
    _buttonOpened?: boolean;
    /** HTML-атрибут `tabindex`. */
    tabIndex?: number;
    /** Переводит ссылку в состояние загрузки. */
    loading?: boolean;
    /** Объект с переменными темы. */
    theme?: ThemeIn;
    /** Задает состояние фокуса.
     * @ignore */
    focused?: boolean;
    /** Переводит ссылку в состояние валидации "Ошибка". */
    error?: boolean;
    /** Переводит ссылку в состояние валидации "Предупреждение". */
    warning?: boolean;
}
declare const LINK_DEFAULT_COMPONENT = "a";
export type LinkProps<C extends ButtonLinkAllowedValues = typeof LINK_DEFAULT_COMPONENT> = PolymorphicPropsWithoutRef<LinkInnerProps, C>;
export interface LinkState {
    focusedByTab: boolean;
}
export declare const LinkDataTids: {
    readonly root: "Link__root";
};
type DefaultProps = Required<Pick<LinkProps<ButtonLinkAllowedValues>, 'use' | 'component'>>;
/**
 * С помощью ссылки пользователь может перейти на другую страницу, раздел приложения или внешний URL.
 */
export declare class Link<C extends ButtonLinkAllowedValues = typeof LINK_DEFAULT_COMPONENT> extends React.Component<LinkProps<C>, LinkState> {
    static __KONTUR_REACT_UI__: string;
    static displayName: string;
    static defaultProps: DefaultProps;
    private getProps;
    state: LinkState;
    private theme;
    getRootNode: TGetRootNode;
    private setRootNode;
    render(): JSX.Element;
    private getTabIndex;
    private getRel;
    private renderMain;
    private handleFocus;
    private handleBlur;
    private handleClick;
}
export {};
