import { ReactElement, ReactNode, RefObject } from 'react';
import { CHILD_HEADING_IDS_ATTRIBUTE, CHILD_TAB_IDS_ATTRIBUTE } from '../../constants';
import { IconLibrary, IconType } from '../../utils/icon-utils';
type TabsItemProps = {
    id?: string;
    title: string;
    icon?: string;
    iconType?: IconType;
    iconLibrary?: IconLibrary;
    children?: ReactNode;
    [CHILD_TAB_IDS_ATTRIBUTE]?: string;
    [CHILD_HEADING_IDS_ATTRIBUTE]?: string;
};
/**
 * Mint app integration:
 * - Wrap with useTabState hook for URL hash sync, tab sync across components, and localStorage persistence
 * - useTabState provides: activeIndex, setActiveIndex (handles hash/sync/persist updates)
 * - Connect onTabChange to setActiveIndex for full integration
 * - Pass panelsRef and use it to implement findInPanels callback for useTabState
 * - The component renders role="tabpanel" and aria-controls attributes that useTabState's
 *   findAndActivateTabContainingElement() uses for DOM-based navigation
 */
type TabsProps = {
    children: ReactElement<TabsItemProps> | ReactElement<TabsItemProps>[];
    defaultTabIndex?: number;
    onTabChange?: (tabIndex: number) => void;
    className?: string;
    borderBottom?: boolean;
    ariaLabel?: string;
    panelsRef?: RefObject<HTMLDivElement>;
};
export declare const Tabs: (({ children, defaultTabIndex, onTabChange, className, borderBottom, ariaLabel, panelsRef, }: TabsProps) => import("react/jsx-runtime").JSX.Element) & {
    Item: ({ children }: TabsItemProps) => import("react/jsx-runtime").JSX.Element;
};
export type { TabsProps, TabsItemProps };
//# sourceMappingURL=tabs.d.ts.map