import { InternalDataTable } from '../components/data-table/data-table-types';
import { InputPanelState } from '../components/input-panel/input-panel-types';
import { DataCell } from './data-structures';
/**
 * Global type
 */
export type Sizing = "extraSmall" | "small" | "base" | "large" | "extraLarge";
export type State = "base" | "danger" | "warning" | "info" | "success";
export type Position = "top" | "bottom" | "left" | "right";
export type DescrMode = "CodeOnly" | "DescOnly" | "Both" | "CodeAndDesc" | "DescAndCode";
export type A11yProps = {
    ariaLabel?: string;
};
export type IconState = State | "primary" | "onBase" | "onPrimary" | "onInfo" | "onDanger" | "onWarning" | "onSuccess" | "onDangerLight" | "onPrimaryLight" | "onWarningLight" | "onInfoLight" | "onSuccessLight";
export type buttonVariant = "primary" | "danger" | "base";
export type buttonExtensions = "oneButton-vertical" | "oneButton-horizontal";
export type buttonAppearance = "raised" | "ghost" | "outlined";
export type InputType = "text" | "password" | "search" | "number";
export type SortOrder = "asc" | "desc";
export type ComponentState = InputPanelState | InternalDataTable;
/**
 * Builds a union of numbers from 0 to N-1 by recursively growing a tuple
 * e.g. Enumerate<4> = 0 | 1 | 2 | 3
 */
type Enumerate<N extends number, Acc extends number[] = []> = Acc["length"] extends N ? Acc[number] : Enumerate<N, [...Acc, Acc["length"]]>;
/**
 * Builds an inclusive range: start index = From, end index = To
 * e.g. Range<3, 6> = 3 | 4 | 5 | 6
 */
export type NumericRange<From extends number, To extends number> = Exclude<Enumerate<To>, Enumerate<From>> | To;
/**
 * Type for the onContextMenu callback used across multiple components.
 * FIXME: Now it declares both mouseEvent and position, both optional. In practice, once we remove ketchup tooltip, we should be able to remove mouseEvent and make position not optional.
 */
export type onContextMenuType = (data: DataCell, htmlElement: HTMLElement | null, mouseEvent?: React.MouseEvent | MouseEvent | null, position?: {
    x: number;
    y: number;
    rect?: DOMRect;
}) => void;
export {};
//# sourceMappingURL=global.d.ts.map