import { createLinear } from "makeup-roving-tabindex";
import type { WithNormalizedProps } from "../../global";
export interface Panel extends Omit<Marko.HTML.Div, `on${string}`> {
}
export interface Tab extends Omit<Marko.HTML.Div, `on${string}`> {
    disabled?: Marko.HTML.Button["disabled"];
}
export interface TabsEvent {
    selectedIndex: number;
}
interface TabsInput extends Omit<Marko.HTML.Div, `on${string}`> {
    tab?: Marko.AttrTag<Tab>;
    panel?: Marko.AttrTag<Panel>;
    activation?: "auto" | "manual";
    size?: "large" | "regular";
    fake?: boolean;
    "selected-index"?: number | string;
    "on-select"?: (event: TabsEvent) => void;
}
export interface Input extends WithNormalizedProps<TabsInput> {
}
export interface State {
    selectedIndex: number;
    tab: Tab[];
    panel: Panel[];
}
declare class Tabs extends Marko.Component<Input, State> {
    _linearRovingTabindex: ReturnType<typeof createLinear>;
    /**
     * Handle a11y for heading
     * https://ebay.gitbooks.io/mindpatterns/content/disclosure/tabs.html
     */
    handleHeadingKeydown(dataIndex: number, event: KeyboardEvent): void;
    handleHeadingClick(selectedIndex: number): void;
    onCreate(): void;
    onInput(input: Input): void;
    onMount(): void;
    onUpdate(): void;
    onRender(): void;
    onDestroy(): void;
    _setIndex(selectedIndex: number): void;
    _setupMakeup(): void;
    _cleanupMakeup(): void;
}
export default Tabs;
