import * as React from 'react';
import { ORIENTATION, FILL, STATE_CHANGE_TYPE } from './constants';
import type { Override } from '../helpers/overrides';
import type { IconProps } from '../icon';
export declare type Orientation = typeof ORIENTATION[keyof typeof ORIENTATION];
export declare type Fill = typeof FILL[keyof typeof FILL];
export declare type StateChange = typeof STATE_CHANGE_TYPE[keyof typeof STATE_CHANGE_TYPE];
export declare type TabsOverrides = {
    Root?: Override;
    TabList?: Override;
    TabHighlight?: Override;
    TabBorder?: Override;
};
export declare type TabOverrides = {
    Tab?: Override;
    ArtworkContainer?: Override;
    TabPanel?: Override;
};
export declare type StatefulTabsState = {
    activeKey: React.Key;
};
export declare type StatefulTabsAction = {
    type: StateChange;
    payload: React.Key;
};
export declare type StatefulTabsReducer = (state: StatefulTabsState, action: StatefulTabsAction) => StatefulTabsState;
export declare type onChange = (params: {
    activeKey: React.Key;
}) => void;
export declare type TabsProps = {
    children: React.ReactNode;
    activeKey?: React.Key;
    disabled?: boolean;
    fill?: Fill;
    orientation?: Orientation;
    activateOnFocus?: boolean;
    onChange?: onChange;
    overrides?: TabsOverrides;
    renderAll?: boolean;
    uid?: string;
};
export declare type StatefulTabsProps = {
    initialState?: StatefulTabsState;
    stateReducer?: StatefulTabsReducer;
} & TabsProps;
export declare type TabProps = {
    title?: React.ReactNode;
    key?: React.Key;
    tabRef?: React.Ref<HTMLButtonElement>;
    overrides?: TabOverrides;
    children?: React.ReactNode;
    artwork?: React.ComponentType<{
        size: IconProps['size'];
        color: IconProps['color'];
    } & IconProps>;
    disabled?: boolean;
};
