import { CSSProperties, FC, SVGProps } from 'react';
import { ButtonProps } from '../components';
export type { FocusableElement } from 'tabbable';
export type ButtonAppearance = "primary" | "secondary" | "ghost" | "danger" | "danger-secondary";
export type OnCloseProps = {
    /**
     * Called when the component is closed. If supplied, a close button will be rendered.
     * @returns void
     */
    onClose?: ButtonProps["onClick"];
};
type Copy<T> = Pick<T, keyof T>;
export type DisableCloseOnEscapeOrClickProps = {
    /**
     * Determines whether to disable pressing "escape" to close the component.
     * @default false
     */
    disableCloseOnEscape?: boolean;
    /**
     * Determines whether to disable clicking outside of the component to close it.
     * @default false
     */
    disableCloseOnClickOutside?: boolean;
};
export type GapSize = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | "0" | "half" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12" | "13" | "14";
export type LayoutUtilProps = {
    flex?: CSSProperties["flex"];
    flexDirection?: CSSProperties["flexDirection"];
    flexGrow?: CSSProperties["flexGrow"];
    flexShrink?: CSSProperties["flexShrink"];
    flexBasis?: CSSProperties["flexBasis"];
    order?: CSSProperties["order"];
    gridArea?: CSSProperties["gridArea"];
    gridColumn?: CSSProperties["gridColumn"];
    gridRow?: CSSProperties["gridRow"];
    gridColumnStart?: CSSProperties["gridColumnStart"];
    gridColumnEnd?: CSSProperties["gridColumnEnd"];
    gridRowStart?: CSSProperties["gridRowStart"];
    gridRowEnd?: CSSProperties["gridRowEnd"];
    alignSelf?: CSSProperties["alignSelf"];
    justifySelf?: CSSProperties["justifySelf"];
    alignItems?: CSSProperties["alignItems"];
    justifyItems?: CSSProperties["justifyItems"];
    alignContent?: CSSProperties["alignContent"];
    justifyContent?: CSSProperties["justifyContent"];
    placeItems?: CSSProperties["placeItems"];
    placeContent?: CSSProperties["placeContent"];
    placeSelf?: CSSProperties["placeSelf"];
    gap?: GapSize;
    rowGap?: GapSize;
    columnGap?: GapSize;
    sm?: Omit<LayoutUtilProps, "sm" | "md" | "lg" | "xl" | "xxl">;
    md?: Omit<LayoutUtilProps, "sm" | "md" | "lg" | "xl" | "xxl">;
    lg?: Omit<LayoutUtilProps, "sm" | "md" | "lg" | "xl" | "xxl">;
    xl?: Omit<LayoutUtilProps, "sm" | "md" | "lg" | "xl" | "xxl">;
    xxl?: Omit<LayoutUtilProps, "sm" | "md" | "lg" | "xl" | "xxl">;
};
export type RequiredByKeys<T, K extends keyof T = keyof T> = Copy<{
    [P in keyof T as P extends K ? P : never]-?: T[P];
} & {
    [P in keyof T as P extends K ? never : P]: T[P];
}>;
export type SemanticColor = "primary" | "secondary" | "critical" | "warning";
export type Size = "0" | "xsmall" | "small" | "medium" | "large" | "xlarge";
export type Status = "info" | "success" | "warning" | "danger";
export type Svg = FC<SVGProps<SVGSVGElement>>;
/**
 * Represents the state of a checkbox-style selection.
 * Used by SelectField, MultiSelectField, and similar components.
 */
export type CheckState = "indeterminate" | "loading" | "checked" | "unchecked";
