import type { BorderType, ShadowType, ShapeType, SizeType, Spacing } from "..";
import type { Background } from "../background";
import type { BaseComponent } from "../base";
import type { ColorGradientScheme } from "../colors";
import type { Overrides } from "../overrides";
import type { StackProps } from "./stack";
type TabControlType = "buttons" | "toggle";
export interface TabControl {
    type: TabControlType;
    stack: StackProps;
}
export interface TabProps extends BaseComponent {
    type: "tab";
    stack: StackProps;
    overrides?: Overrides<TabProps>;
}
export interface TabsProps extends BaseComponent {
    type: "tabs";
    visible?: boolean | null;
    size: SizeType;
    padding: Spacing;
    margin: Spacing;
    control: TabControl;
    tabs: TabProps[];
    default_tab_id: string;
    background?: Background | null;
    shape?: ShapeType | null;
    border?: BorderType | null;
    shadow?: ShadowType | null;
    overrides?: Overrides<TabsProps>;
}
export interface TabControlProps extends BaseComponent {
    type: "tab_control";
    overrides?: Overrides<TabControlProps>;
}
export interface TabControlButtonProps extends BaseComponent {
    type: "tab_control_button";
    tab_id: string;
    stack: StackProps;
    overrides?: Overrides<TabControlButtonProps>;
    /**
     * @deprecated Use `tab_id` instead. This stores the index of the tab the control is related to,
     *             we'll utilize the `tab_id` field instead but need this for backwards compatibility
     */
    tab_index: number;
}
export interface TabControlToggleProps extends BaseComponent {
    type: "tab_control_toggle";
    default_value: boolean;
    thumb_color_on: ColorGradientScheme;
    thumb_color_off: ColorGradientScheme;
    track_color_on: ColorGradientScheme;
    track_color_off: ColorGradientScheme;
    overrides?: Overrides<TabControlToggleProps>;
}
export {};
