import { ReactNode } from 'react';
import { TabProps as MUITabProps, Theme } from '@mui/material';
import { OverridesStyleRules } from '@mui/material/styles/overrides';
import { ComponentPalletColor, Sizes } from '@m4l/styles';
import { TabSlots } from './Slots/TabEnum';
import { TAB_KEY_COMPONENT } from './constants';
/**
 * Visual variant of the Tab: outlined (underline when selected) or contained (filled background when selected).
 */
export type TabVariant = 'outlined' | 'contained';
/** Props for the Tab component. */
export interface TabProps extends Omit<MUITabProps, 'size' | 'label' | 'color' | 'variant'> {
    /** Value for the `data-testid` attribute used in tests. */
    dataTestId?: string;
    /** Visual size of the tab: `small` or `medium`. */
    size?: Extract<Sizes, 'small' | 'medium'>;
    /**
     * URL of an icon image to show in the tab (e.g. favicon or custom icon).
     * @deprecated Prefer using `startAdornment` with an icon component instead.
     */
    urlIcon?: string;
    /** Text label displayed in the tab. */
    label?: string;
    /** Description displayed in the tab. */
    description?: string;
    /** Palette color; only `default` is supported for Tab. */
    color?: Extract<ComponentPalletColor, 'default'>;
    /** Accessible label for assistive technologies (overrides visible label for screen readers when needed). */
    ariaLabel?: string;
    /** Visual variant: `outlined` (default) or `contained`. */
    variant?: TabVariant;
    /** Optional content rendered before the label (e.g. icon, badge). */
    startAdornment?: ReactNode;
    /** Optional content rendered after the label (e.g. count chip). Use this to show a total/count chip. */
    endAdornment?: ReactNode;
}
/**
 * Slot type of the `Tab`, based on the options defined in `TabSlots`.
 */
export type TabSlotsType = keyof typeof TabSlots;
/**
 * Internal owner state of the `Tab` component.
 */
export interface TabOwnerState extends Pick<TabProps, 'size' | 'disabled'> {
    /** Whether the `Tab` is in Skeleton state. */
    tabSkeleton: boolean;
    /** Palette color associated with the `Tab`. */
    tabColor: TabProps['color'];
    /** Whether the tab is disabled. */
    tabDisabled: TabProps['disabled'];
    /** Visual size of the tab. */
    tabSize: TabProps['size'];
    /** Tab variant (outlined or contained). */
    tabVariant: TabProps['variant'];
    /** Whether the tab has a description. */
    hasDescription: boolean;
}
/**
 * Custom styles for the `Tab`, overriding the default style rules.
 */
export type TabStyles = OverridesStyleRules<TabSlots, typeof TAB_KEY_COMPONENT, Theme>;
//# sourceMappingURL=types.d.ts.map