import type { AriaAttributes } from 'react';
import React from 'react';
import type { Nullable } from '../../typings/utility-types';
import type { CommonProps } from '../../internal/CommonWrapper';
import type { TGetRootNode } from '../../lib/rootNode';
import type { TabsContextType } from './TabsContext';
export interface TabIndicators {
    error: boolean;
    warning: boolean;
    success: boolean;
    primary: boolean;
    disabled: boolean;
}
export declare const TabDataTids: {
    readonly root: "Tab__root";
};
export interface TabProps<T extends string = string> extends Pick<AriaAttributes, 'aria-label' | 'aria-describedby'>, CommonProps {
    /** Позволяет передавать свой компонент, строку или функцию, которая заменит собой элемент используемый в компоненте по умолчанию.
     * Реализует паттерн [render prop](https://www.patterns.dev/posts/render-props-pattern). */
    component?: React.ComponentType<any> | string;
    /** Задает HTML-атрибут `href` - адрес, на который следует перейти. */
    href?: string;
    /** Задает уникальный идентификатор таба. По нему компонент `<Tabs />` определяет какой `<Tab />` сейчас выбран. */
    id?: T;
    /**`HTML`-событие `onclick`. */
    onClick?: (event: React.MouseEvent<HTMLElement>) => void;
    /** `HTML`-событие `onkeydown`. */
    onKeyDown?: (event: React.KeyboardEvent<HTMLElement>) => void;
    /** Делает компонент недоступным. */
    disabled?: boolean;
    /** Переводит контрол в состояние валидации "ошибка". */
    error?: boolean;
    /** Переводит контрол в состояние валидации "предупреждение". */
    warning?: boolean;
    /** Устанавливает визульное состояние валидации "успех". */
    success?: boolean;
    /** Задает визульное состояние главного элемента. */
    primary?: boolean;
}
export interface TabState {
    focusedByKeyboard: boolean;
}
type DefaultProps = Required<Pick<TabProps, 'component' | 'href'>>;
/**
 * Вложенный элемент компонента Tabs.
 */
export declare class Tab<T extends string = string> extends React.Component<TabProps<T>, TabState> {
    static __KONTUR_REACT_UI__: string;
    static displayName: string;
    static contextType: React.Context<TabsContextType<any>>;
    context: TabsContextType;
    static defaultProps: DefaultProps;
    private getProps;
    state: TabState;
    private theme;
    private tabComponent;
    getRootNode: TGetRootNode;
    private setRootNode;
    constructor(props: TabProps<T>);
    componentDidMount(): void;
    componentDidUpdate(): void;
    componentWillUnmount(): void;
    render(): React.JSX.Element;
    getIndicators(): {
        error: boolean;
        warning: boolean;
        success: boolean;
        primary: boolean;
        disabled: boolean;
    };
    getUnderlyingNode: () => Nullable<React.ReactElement<Tab<T>, string | React.JSXElementConstructor<any>>>;
    private renderMain;
    private getId;
    private refTabComponent;
    private getTabInstance;
    private switchTab;
    private handleKeyDown;
    private handleFocus;
    private handleBlur;
}
export {};
