import type { AriaAttributes } from 'react';
import React from 'react';
import type { CommonProps } from '../../internal/CommonWrapper';
import type { TGetRootNode } from '../../lib/rootNode';
import type { SizeProp } from '../../lib/types/props';
import { Tab } from './Tab';
type ValueBaseType = string;
export interface TabsProps<T extends ValueBaseType = string> extends CommonProps {
    /** Задает кастомный класс подчёркиванию таба. */
    indicatorClassName?: string;
    /** Задает размер контрола. */
    size?: SizeProp;
    /** Задает текущий активный `<Tab />`. Принимает `id` таба. */
    value: T;
    /** Задает функцию, изменяющую текущий активный `<Tab />`. */
    onValueChange?: (value: T) => void;
    /** Задает расположение элементов по вертикали.
     * @default false */
    vertical?: boolean;
    /** Задает ширину компонента Tabs. */
    width?: number | string;
    /** @ignore */
    'aria-describedby'?: AriaAttributes['aria-describedby'];
}
export declare const TabsDataTids: {
    readonly root: "Tabs__root";
    readonly indicatorRoot: "Indicator__root";
};
type DefaultProps = Required<Pick<TabsProps, 'vertical' | 'size'>>;
/**
 * Родитель компонента Tab. Связывает `Tab`'ы в группу и позволяет управлять их состоянием, помогают в навигации.
 *
 * Используйте `Tabs` для второстепенной навигации, для группировки или фильтрации контента.
 *
 * Не используйте `Tabs` для основной навигации. Для этого лучше подходит главное меню на цветной плашке — оно более заметно на странице.
 * Не используйте `Tabs` для переключения состояний — для этого есть RadioGroup, Toggle и Switcher.
 */
export declare class Tabs<T extends string = string> extends React.Component<TabsProps<T>> {
    static __KONTUR_REACT_UI__: string;
    static displayName: string;
    static defaultProps: DefaultProps;
    private getProps;
    static Tab: typeof Tab;
    private theme;
    private tabs;
    private tabUpdates;
    private listeners;
    getRootNode: TGetRootNode;
    private setRootNode;
    render(): JSX.Element;
    private shiftFocus;
    private notifyUpdate;
    private switchTab;
    private getTab;
    private addTab;
    private removeTab;
}
export {};
