import { ArgTypes } from '@storybook/react-vite';
import { ComponentsType, DataCell, DataCellInputSettings, DataObj, DataObjClass } from '../../types/data-structures';
import { A11yProps, onContextMenuType, Position, Sizing } from '../../types/global';
import { ObjectProtocolHandler, OptionsRequest, UploadRequest } from '../../types/generic';
import { CSSProperties } from 'react';
export type CellBindProps = {
    /**
     * Cell id
     */
    id?: string;
    /**
     * Smeup id, if different from id
     */
    smpId?: string;
    /**
     * Smeup Fun linked to the cell.
     * @optional
     */
    fun?: string;
    /**
     * Cell options.
     * @optional
     */
    options?: DataCell[];
    /**
     * Label to display in the cell.
     * @optional
     */
    label?: string;
    /**
     * Position of the label in the cell.
     * @optional
     */
    labelPosition?: Position;
    /**
     * Helper text to display in the cell.
     * @optional
     */
    helper?: string;
    /**
     * Name of the icon to display in the cell.
     * @optional
     */
    icon?: string;
    /**
     * Name of the fallback icon when the icon isn't found.
     * @optional
     */
    placeholderIcon?: string;
    /**
     * Flag to indicate if the cell is disabled.
     * @optional
     */
    disabled?: boolean;
    /**
     * Cell sizing.
     * @optional
     */
    sizing?: Sizing;
    /**
     * Flag to indicate if the cell is editable.
     * @optional
     */
    isEditable?: boolean;
    /**
     * Input Settings
     */
    inputSettings?: DataCellInputSettings;
    /**
     * It's the error message
     * @default ''
     */
    error?: string;
    /**
     * Enable tooltip indicator and onContextMenu event
     * @default false
     */
    tooltip?: boolean;
    /**
     * Manage the size of the field
     */
    size?: number;
    /**
     * Manage the maxLength of the field
     */
    maxLength?: number;
    /**
     * Identify that the components is optimized for performance
     */
    isVisualOnly?: boolean;
    /**
     * Inject custom CSS styles (used in G Cell)
     */
    style?: CSSProperties;
    /**
     * Identify the option index that is automatically selected on render
     */
    autoSelectOptionIndex?: number;
    /**
     * Associated DataObj
     */
    obj?: DataObj;
    onClick?: (e: React.MouseEvent) => void;
    onOptionsRequest?: OptionsRequest;
    onUploadRequest?: UploadRequest;
    /**
     * Callback invoked when an object protocol action is requested for this cell,
     * typically in response to user interaction with the associated {@link DataObj}.
     */
    onObjectProtocol?: ObjectProtocolHandler;
} & A11yProps;
export type EventTriggers = {
    focusEvent?: React.FocusEvent;
};
export interface StringCellBindProps extends CellBindProps {
    bindValue: string;
    optionalDisplayValue?: string;
    onChange?: (args: CellBindEventArgs) => void;
    onConfirmedChange?: (args: CellBindEventArgs) => void;
    onEnter?: (args: CellBindEventArgs) => void;
    onBlur?: (e: EventTriggers, args: CellBindEventArgs) => void;
}
export interface BooleanCellBindProps extends CellBindProps {
    bindValue: boolean;
    optionalDisplayValue?: string;
    onChange?: (bindValue: boolean) => void;
    onConfirmedChange?: (bindValue: boolean) => void;
}
export interface ArrayCellBindProps extends CellBindProps {
    elements: ArrayElementBindProps[];
    onChange?: (elements: ArrayElementBindProps[]) => void;
    onConfirmedChange?: (elements: ArrayElementBindProps[]) => void;
    onBlur?: (e: EventTriggers, elements: ArrayElementBindProps[]) => void;
}
export interface NumberCellBindProps extends CellBindProps {
    bindValue: number | undefined;
    optionalDisplayValue?: string;
    onChange?: (bindValue: number | undefined, optionalDisplayValue?: string) => void;
    onEnter?: (bindValue: number | undefined, optionalDisplayValue?: string) => void;
    onBlur?: (e: EventTriggers, bindValue: number | undefined, optionalDisplayValue?: string) => void;
}
export type ArrayElementBindProps = {
    bindValue: string;
    optionalDisplayValue?: string;
};
export interface CellProps extends DataCell {
    id: string;
    label?: string;
    /**
     * Width allocated for the label in horizontal label positioning
     * @optional
     */
    labelWidth?: string;
    helper?: string;
    autoSelectOptionIndex?: number;
    /** Visual mode - when true the cell is a read-only component */
    isVisualOnly?: boolean;
    /** Cell parent component */
    parentComponent?: ComponentsType;
    /**
     * Decimal separator from AS400
     */
    dSep?: string;
    onChange?: (cell: DataCell) => void;
    onConfirmedChange?: (cell: DataCell) => void;
    onClick?: (e: React.MouseEvent | React.KeyboardEvent, cell: DataCell) => void;
    onBlur?: (e: EventTriggers, cell: DataCell) => void;
    onEnter?: (cell: DataCell) => void;
    onOptionsRequest?: OptionsRequest;
    onUploadRequest?: UploadRequest;
    onContextMenu?: onContextMenuType;
    /**
     * Callback invoked when an object protocol associated with this cell should be executed.
     * Typically triggered by user interactions that activate or open the cell's object content.
     */
    onObjectProtocol?: ObjectProtocolHandler;
}
export type CellBindEventArgs = {
    bindValue: string;
    objClass?: DataObjClass;
    optionalDisplayValue?: string;
    fun?: string;
};
export declare const cellArgs: Partial<ArgTypes<CellProps>>;
//# sourceMappingURL=cell-types.d.ts.map