import { RenderProp } from '../util/renderProp';
import { ComponentSize } from '../util/component';
import { TabSpec } from './Selector';
import { Align } from '../align';
import { default as React, ReactElement, ReactNode } from 'react';

export interface Tab extends TabSpec {
    content?: ReactNode;
}
export type TabRenderProp = RenderProp<Tab>;
export interface UseStaticTabsProps {
    tabs: Tab[];
    content?: TabRenderProp;
    onSelect?: (key: string) => void;
    selected?: string;
}
export declare const resetSelection: (selected?: string, tabs?: Tab[]) => string | undefined;
export declare const rename: (key: string, title: string, tabs: Tab[]) => Tab[];
export declare const useStatic: ({ tabs, content, selected, onSelect, }: UseStaticTabsProps) => TabsContextValue;
export interface TabsContextValue {
    tabs: Tab[];
    emptyContent?: ReactElement | null;
    closable?: boolean;
    selected?: string;
    onSelect?: (key: string) => void;
    content?: TabRenderProp | ReactNode;
    onClose?: (key: string) => void;
    onDragStart?: (e: React.DragEvent<HTMLDivElement>, tab: TabSpec) => void;
    onDragEnd?: (e: React.DragEvent<HTMLDivElement>, tab: TabSpec) => void;
    onDrop?: (e: React.DragEvent<HTMLDivElement>) => void;
    onRename?: (key: string, title: string) => void;
    onCreate?: () => void;
}
export interface TabsProps extends Omit<Align.SpaceProps, "children" | "onSelect" | "size" | "onDragStart" | "onDragEnd" | "content">, TabsContextValue {
    children?: TabRenderProp | ReactNode;
    size?: ComponentSize;
}
export declare const TabsContext: React.Context<TabsContextValue>;
export declare const useTabsContext: () => TabsContextValue;
export declare const Tabs: ({ id, content, children, onSelect, selected, closable, tabs, onClose, onDragStart, onDragEnd, onCreate, onRename, emptyContent, className, onDragOver, onDrop, size, direction: dir, ...props }: TabsProps) => ReactElement;
export declare const Provider: React.Provider<TabsContextValue>;
export declare const Content: () => ReactNode | null;
//# sourceMappingURL=Tabs.d.ts.map