import React from 'react';
import { Choices } from 'madwizard';
type Props = Choices.Choices & {
    /** markdown document id */
    uuid: string;
    /** tab nesting depth */
    depth: number;
    /** id for this tab group */
    'data-kui-choice-group': string;
    /** the tab models */
    tabs: {
        props: {
            title: string;
            'data-kui-tab-index': string;
            children?: React.ReactNode[];
        };
    }[];
};
type State = {
    activeKey: number;
    previousActiveKey: number;
};
export declare function activateTab(slug: string, evt?: React.MouseEvent): void;
export declare function onTabSwitch(uuid: string, cb: (group: string, newTabId: string) => void): void;
export declare function offTabSwitch(uuid: string, cb: (group: string, newTabId: string) => void): void;
export type CurrentMarkdownTabProps = State;
export declare const CurrentMarkdownTab: React.Context<State>;
export declare class LinkableTabs extends React.PureComponent<Props, State> {
    private readonly slugs;
    private readonly cleaners;
    constructor(props: Props);
    private static findActiveKey;
    private static findTabIndex;
    private initEvents;
    componentDidMount(): void;
    componentWillUnmount(): void;
    private static group;
    private member;
    private readonly onSelect;
    render(): JSX.Element;
    private get isSecondary();
    /** Render as a Tabs UI */
    private asTabs;
}
export interface TabProps {
    depth: string;
    'data-kui-choice-group': string;
    children: any;
}
export declare function getTabsDepth(props: TabProps): number;
export declare function getTabTitle(child: TabProps['children'][number]): string | number | true | (string | number)[];
export declare function isTabs(props: Partial<TabProps>): props is Required<TabProps>;
export default function tabbedWrapper(uuid: string, choices: Choices.ChoiceState): (props: TabProps) => JSX.Element;
export {};
