import { CSSProperties } from 'react';
import { DescrMode, NumericRange } from './global';
import { BooleanValue } from './legacy';
export type DataObj = {
    t: string;
    p: string;
    k: string;
};
export type DataObjClass = Omit<DataObj, "k">;
export type DataCell = {
    /**
     * The underlying object of the cell
     */
    obj?: DataObj;
    /**
     * Shape of the cell
     */
    shape?: DataCellShapes | undefined | string;
    decode?: string;
    value?: string;
    data?: DataCellSetup;
    icon?: string;
    placeholderIcon?: string;
    /**
     * When true, the cell is editable and changes its shape
     */
    isEditable?: boolean;
    /**
     * tooltip flag. If true show tooltip indication and emit onContextMenu event
     */
    tooltip?: boolean;
    /**
     * Smeup Fun
     */
    fun?: string;
    inputSettings?: DataCellInputSettings;
    style?: CSSProperties;
    options?: DataCell[] | GenericObject[] | GenericObject;
    state?: DataCellState;
    /** Error message associated with the cell */
    error?: string;
};
export type DataCellSetup = {
    [index: string]: unknown;
    size?: number;
    maxLength?: number;
    DescrMode?: DescrMode;
    isVisualOnly?: boolean;
    label?: string;
    mappedCommandId?: string;
    /**
     * Code of the agent assigned to the SUB
     */
    agentCode?: string;
    /**
     * Enables or disables the toolbar for the cell
     */
    toolbar?: boolean;
    /**
     * CSS style Properties to apply to the cell component
     */
    style?: CSSProperties;
    /**
     * BTN specific prop controlling the label display
     */
    ShowText?: BooleanValue;
    /**
     * Badge string
     */
    Badge?: string;
};
export declare enum ComponentShapes {
    ACC = "ACC",
    ACT = "ACT",
    ATM = "ATM",
    BOX = "BOX",
    BRD = "BRD",
    BTN = "BTN",
    CAL = "CAL",
    CHA = "CHA",// = EXA
    DFT = "DFT",
    DYN = "DYN",
    DSH = "DSH",
    EML = "EML",
    EXA = "EXA",// = CHA
    EXB = "EXB",// = MAT
    EXD = "EXD",// = SCH
    EXU = "EXU",
    FBK = "FBK",
    FLD = "FLD",
    FOR = "FOR",
    GNT = "GNT",
    HTM = "HTM",
    IML = "IML",
    IMG = "IMG",
    INT = "INT",
    INP = "INP",
    JSO = "JSO",
    LAB = "LAB",
    MAT = "MAT",// = EXB
    PLN = "PLN",
    PDF = "PDF",
    SCH = "SCH",// = EXD
    SPL = "SPL",
    TED = "TED",
    TRE = "TRE",
    TXT = "TXT",
    CND = "CND",
    UNK = "UNK",
    OGN = "OGN",
    DRW = "DRW",
    SLD = "SLD"
}
export declare const DataCellShapes: {
    readonly AUTOCOMPLETE: "ACP";
    readonly BUTTON_LIST: "BTL";
    readonly CHART: "GRA";
    readonly BREADCRUMBS: "BRD";
    readonly BARCODE: "BCD";
    readonly BUTTON: "BTN";
    readonly CHECKBOX: "CHK";
    readonly CHIP: "CHI";
    readonly COLOR_PICKER: "CLP";
    readonly COMBOBOX: "CMB";
    readonly DATE: "CAL";
    readonly EDITOR: "EDT";
    readonly GAUGE: "GAU";
    readonly ICON: "ICO";
    readonly IMAGE: "IMG";
    readonly INPUT_CHECKBOX: "INC";
    readonly INPUT_FIELD: "INF";
    readonly INPUT_NUMBER: "INR";
    readonly KNOB: "KNB";
    readonly LABEL: "LBL";
    readonly MEMO: "MEM";
    readonly MULTI_AUTOCOMPLETE: "AML";
    readonly MULTI_SELECT: "SML";
    readonly MULTI_COMBOBOX: "CML";
    readonly MULTI_CONFIG: "CFM";
    readonly OBJECT: "OBJ";
    readonly PROGRESS_BAR: "PGB";
    readonly RADIO: "RAD";
    readonly RATING: "RTG";
    readonly SELECT: "SEL";
    readonly SPOTLIGHT: "SPL";
    readonly SWITCH: "SWT";
    readonly TABLE: "TBL";
    readonly TEXT_FIELD: "ITX";
    readonly BUTTON_GROUP: "BTO";
    readonly TIME: "TIM";
    readonly TIMEPICKER: "TPK";
    readonly BOOLEAN_BUTTON: "BNB";
    readonly SLIDER: "SLD";
    readonly FILE_UPLOAD: "FUP";
    readonly FILE_READER: "FRE";
    readonly COMMAND_EXECUTE: "RUN";
    readonly ONE_BUTTON: "BTO";
    readonly PASSWORD: "PWD";
    readonly SPINNER: "SPN";
    readonly DECODE: "DEC";
    readonly TREE: "TRE";
};
/** Component List */
export declare enum ComponentsType {
    INPUT_PANEL = "InputPanel",
    BOX = "Box",
    DATA_TABLE = "DataTable",
    IMAGE_LIST = "ImageList",
    FIELD = "Field",
    TREE = "Tree",
    APPBAR = "AppBar",
    NO_COMPONENT = "NoComponent"
}
/**
 * Represent the type of the shape (like enum)
 */
export type DataCellShapes = (typeof DataCellShapes)[keyof typeof DataCellShapes];
export declare const DataStructureType: {
    readonly SMEUP_DATA_TREE: "SmeupDataTree";
    readonly SMEUP_DATA_TABLE: "SmeupDataTable";
    readonly SMEUP_MESSAGE: "SmeupMessage";
};
export type DataStructureType = (typeof DataStructureType)[keyof typeof DataStructureType];
export type DataCellInputSettings = {
    checkValueOnExit?: boolean;
    checkObject?: boolean;
    forceUppercase?: boolean;
};
export interface DataStructure {
    type: DataStructureType;
    setup?: Setup;
    buttons?: DataNode[];
}
export interface DataTree extends DataStructure {
    columns?: DataColumn[];
    children?: DataNode[];
}
export interface DataCells {
    [index: string]: DataCell;
}
export interface DataColumn {
    name: string;
    title: string;
    obj?: DataObj;
    visible?: boolean;
    helper?: string;
    shape?: DataCellShapes | undefined | string;
    isKey?: boolean;
}
export interface SmeupMessage {
    message: string;
    gravity?: SmeupMessageGravity;
    fullMessage?: string;
    mode?: SmeupMessageMode;
    buttons?: DataNode[];
    tipo?: string;
    state?: SmeupMessageState;
    value?: string;
    timestamp?: string;
    id?: string;
}
export interface DataRow {
    rowId?: string;
    id?: string;
    cells?: DataCells;
    layout?: DataLayout;
    /**
     * Attribute returned by the backend indicating if the Row contains an error
     */
    error?: boolean;
}
export interface DataNode extends DataCell {
    children?: DataNode[];
    cells?: DataCells;
    forcedLeaf?: boolean;
    layout?: DataLayout;
}
export interface Setup {
    title?: string;
    options?: SetupBase;
    userSetups?: boolean;
    commands?: DataNode[];
    context?: string;
    operations?: {
        insert?: boolean;
        delete?: boolean;
    };
}
export type SetupBase = {
    [key in ComponentShapes]?: {
        [setupKey: string]: string;
    }[];
};
export interface DataTable extends DataStructure {
    columns: DataColumn[];
    rows: DataRow[];
}
export interface DataLayout {
    horizontal?: boolean;
    inline?: boolean;
    sections?: DataLayoutSection[];
    sectionsType?: "tab";
}
export interface DataLayoutSection {
    id?: string;
    title?: string;
    content?: DataLayoutField[];
    sections?: DataLayoutSection[];
    horizontal?: boolean;
    /**
     * Number of columns to divide the content.
     */
    columns?: string;
    /**
     * Attributes to apply to the layout section ex: justify, align, gap etc.
     */
    layoutAttributes?: GlobalClassName[];
    dim?: string;
    /**
     * Section type
     */
    sectionsType?: "tab";
}
export interface DataLayoutField extends Partial<DataCell> {
    id?: string;
    title?: string;
    layoutAttributes?: GlobalClassName[];
    visible?: boolean;
}
export type Justification = "center" | "end" | "start" | "between" | "around" | "evenly";
export type Alignment = "center" | "end" | "start";
export type JustificationClass = `justify-${Justification}`;
export type AlignmentClass = `items-${Alignment}`;
export type GridColsClass = `grid-cols-${NumericRange<1, 12> | number}`;
export type GridRowsClass = `grid-rows-${NumericRange<1, 12> | number}`;
export type GapClass = `gap-${NumericRange<0, 15> | number}`;
type GridItemPositioningAxis = "col" | "row";
type GridItemPositioningOffset = "start" | "end" | "span";
export type GridItemsPositioningClass = `${GridItemPositioningAxis}-${GridItemPositioningOffset}-${NumericRange<1, 24> | number}`;
export type GlobalClassName = JustificationClass | AlignmentClass | GridColsClass | GridRowsClass | GapClass | GridItemsPositioningClass;
export declare const DescrModeType: {
    readonly CODE_ONLY: "CodeOnly";
    readonly DESC_ONLY: "DescOnly";
    readonly BOTH: "Both";
    readonly CODE_AND_DESC: "CodeAndDesc";
    readonly DESC_AND_CODE: "DescAndCode";
};
/**
 * Represent the type of the display mode (like enum)
 */
export declare const SmeupMessageGravity: {
    INFO: string;
    ERROR: string;
    QUEST: string;
    WARNING: string;
    UNAUTHORIZED: string;
};
/**
 * Represent the type of the message gravity (like enum)
 */
export type SmeupMessageGravity = (typeof SmeupMessageGravity)[keyof typeof SmeupMessageGravity];
/**
 * Represent the type of the message mode (like enum)
 */
export declare const SmeupMessageMode: {
    TN: string;
    PN: string;
    TM: string;
    PM: string;
    HH: string;
    TS: string;
    PS: string;
    PT: string;
    TT: string;
    IN: string;
};
/**
 * Represent the type of the message mode (like enum)
 */
export type SmeupMessageMode = (typeof SmeupMessageMode)[keyof typeof SmeupMessageMode];
export declare const SmeupMessageState: {
    readonly COMPLETED: "Completed";
    readonly PAUSED: "Paused";
    readonly ERROR: "Error";
    readonly ON_LOADING: "OnLoading";
};
export type SmeupMessageState = (typeof SmeupMessageState)[keyof typeof SmeupMessageState];
export type DataCellState = "Active";
export type GenericObject = {
    [index: string]: unknown;
};
export {};
//# sourceMappingURL=data-structures.d.ts.map