import React from 'react';
import { TabProps } from '../components/types.js';
export interface TabsContextExternalProps {
    /** Left | Right */
    align?: 'left' | 'right';
    /** Will stretch tabs to evenly fill available width */
    fullWidth?: boolean;
    /** Hide the bottom border under the tab strip */
    noBottomBorder?: boolean;
    /** Display tabs as pills */
    pills?: boolean;
    /** Used when you want to take control of tabs state. Tabs will stop to internally manage which tab is active and will use this tabKey instead.  */
    currentKey?: string;
    /** In uncontrolled mode, the tab with the specified key will start as active.  */
    initialTabKey?: string;
    /** Callback triggered when a new tab has been picked, it receives the new tabKey as its argument. */
    onTabClick?: React.Dispatch<React.SetStateAction<string>> | ((newTabKey: string) => void);
}
export interface TabsContextValue {
    align?: 'left' | 'right';
    currentKey?: string;
    deRegisterTab: (key: string) => void;
    displayedContent?: React.ReactNode;
    fullWidth?: boolean;
    handleTabClick: (newTabKey: string) => void;
    noBottomBorder?: boolean;
    pills?: boolean;
    registerTabProps: (key: string, children: TabProps) => void;
    /** The tab that owns the page tab sequence (tabIndex 0). Active tab when valid, else the first enabled tab, so the tablist is always reachable. */
    rovingTabKey?: string;
    tabsPropsByKey?: {
        [key: string]: TabProps;
    };
}
export interface TabsContextProps extends TabsContextExternalProps {
    /** The Tabs, you must use the <Tabs.Tab /> subcomponent for proper compatibility.  */
    children: React.ReactNode;
}
export declare const TabsContextProvider: ({ align, children, currentKey, fullWidth, initialTabKey, noBottomBorder, onTabClick, pills, }: TabsContextProps) => React.ReactElement;
export declare const useTabsContext: (contextRequired?: boolean) => TabsContextValue;
