import type { Key } from '@react-types/shared';
import type { ReactNode } from 'react';
import type { TabListState } from 'react-stately';
import type { Styles } from '../../../tasty';
import type { CacheKeyValue, ParsedPanel, ParsedTab } from './types';
/**
 * Determines if a panel should be rendered based on prerender/keepMounted settings.
 */
export declare function shouldRenderPanel(isActive: boolean, wasVisited: boolean, effectivePrerender: boolean | undefined, effectiveKeepMounted: boolean | undefined): boolean;
export interface TabPanelRendererProps {
    tabKey: string;
    state: TabListState<object>;
    content: ReactNode;
    prerender?: boolean;
    keepMounted?: boolean;
    tabPrerender?: boolean;
    tabKeepMounted?: boolean;
    visitedKeys: Set<string>;
    panelStyles?: Styles;
    qa?: string;
    qaVal?: string;
}
/**
 * Renders a single tab panel with proper ARIA attributes.
 */
export declare function TabPanelRenderer({ tabKey, state, content, prerender, keepMounted, tabPrerender, tabKeepMounted, visitedKeys, panelStyles, qa, qaVal, }: TabPanelRendererProps): import("react/jsx-runtime").JSX.Element | null;
export interface CachedPanelRendererProps {
    parsedTabs: ParsedTab[];
    explicitPanels: Map<string, ParsedPanel>;
    state: TabListState<object>;
    renderPanel: (key: Key) => ReactNode;
    panelCacheKeys?: Record<string | number, CacheKeyValue>;
    prerender: boolean;
    keepMounted: boolean;
    visitedKeys: Set<string>;
}
/**
 * Renders panels with content caching for `renderPanel`.
 *
 * Core principle: `renderPanel` is only called when the tab is active
 * (or once on mount for `prerender`). Inactive panels use cached content.
 *
 * Caching behavior:
 * - `keepMounted=true`: Cache content after first activation, reuse while inactive
 * - `prerender=true`: Call `renderPanel` once on mount, reuse until active again
 * - `panelCacheKeys`: Adds cache-key-based invalidation (lazy - only when active)
 * - No caching props: Only active panel is rendered, unmount when inactive
 */
export declare function CachedPanelRenderer({ parsedTabs, explicitPanels, state, renderPanel, panelCacheKeys, prerender, keepMounted, visitedKeys, }: CachedPanelRendererProps): import("react/jsx-runtime").JSX.Element;
