export type GxgFormItemsArray = (HTMLGxgComboBoxItemElement | HTMLGxgFormCheckboxElement | HTMLGxgFormRadioElement)[] | null;
export type ObjectBaseData = {
    id: string;
    name: string;
};
export type GxOption = {
    id: string;
    label?: string;
    name?: string;
    value?: string;
    type?: string;
    disabled?: boolean;
    checked?: boolean;
    selected?: boolean;
    icon?: string;
    iconName?: string;
    iconColor?: string;
};
export type ImportCategoryData = {
    id: string;
    name: string;
    icon: string;
    items: ImportItemData[];
};
export type ImportItemData = {
    id: string;
    name: string;
};
export type ImportItemResultData = {
    id: string;
    name: string;
    status: "warning" | "error" | "success";
    messages?: string[];
};
export type Position = "above" | "end" | "below" | "start";
export type LabelPosition = "inline-start" | "block-start" | "none";
export type FormElementValidation = {
    key: string;
    message: string;
    hasError: boolean;
};
export type FormSubmitResult = {
    success: boolean;
    fieldErrors: FormElementValidation[];
};
export type ConnectionResultData = {
    success: boolean;
    fieldErrors: FormElementValidation[];
};
export type ObjectType = {
    id: string;
    name: string;
    icon?: string;
};
export type ContextMenuInfo = {
    selection: string[];
    clientX: number;
    clientY: number;
};
export type ItemsCheckedState = {
    itemsChecked: string[];
    itemsUnchecked: string[];
};
export type ItemsCheckedResult = {
    itemsToCheck: string[];
    itemsToUncheck: string[];
};
export type ResultState = "info" | "success" | "warning" | "error";
export type EntityData = {
    id: string;
    name: string;
    iconSrc?: string;
};
export type GxServerAuthenticationType = "genexus" | "local";
/**
 * Useful to filtering the keys of an object by pattern matching the keys. For
 * example, all GeneXus IDE UI controls:
 *
 * @example
 * ```ts
 * type GeneXusIdeUIControlsTagName = FilterKeys<
 *   HTMLElementTagNameMap,
 *   `gx-ide-${string}`
 * >
 * ```
 */
export type FilterKeys<T, U> = {
    [K in keyof T]: K extends U ? K : never;
}[keyof T];
export type GeneXusIdeUIControlsTagName = FilterKeys<HTMLElementTagNameMap, `gx-ide-${string}`>;
