import type { AriaAttributes } from 'react';
import React from 'react';
import type { Nullable } from '../../typings/utility-types.js';
import type { CommonProps } from '../../internal/CommonWrapper/index.js';
import type { TGetRootNode } from '../../lib/rootNode/index.js';
import type { TabsContextType } from './TabsContext.js';
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 {
    /** Компонент или тег для рендера корневого элемента. */
    component?: React.ComponentType<any> | string;
    /** HTML-атрибут `href`. */
    href?: string;
    /** Уникальный идентификатор таба. По нему компонент `<Tabs />` определяет выбранный таб. */
    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](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui_display-data-tabs-tabs--docs).
 */
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 globalObject;
    private emotion;
    private cx;
    private styles;
    private horizontalStyles;
    private verticalStyles;
    private theme;
    private tabComponent;
    getRootNode: TGetRootNode;
    private setRootNode;
    private keyListener;
    constructor(props: TabProps<T>);
    componentDidMount(): void;
    componentDidUpdate(): void;
    componentWillUnmount(): void;
    render(): React.JSX.Element;
    getIndicators(): TabIndicators;
    getUnderlyingNode(): Nullable<React.ReactElement<Tab<T>>>;
    private renderMain;
    private getId;
    private refTabComponent;
    private getTabInstance;
    private switchTab;
    private handleKeyDown;
    private handleFocus;
    private handleBlur;
}
export {};
