import React from "react";
import { IDataDefinition } from "@appglue/common/dist/Common/Data/Definitions/IDataDefinition";
import { ValidationIssue } from "@appglue/common/dist/Common/IDesignValidationProvider";
import { FormControl } from "../Controls/FormControl";
import { BorderStyle } from "../Utilities/FormDesignConstants";
import { DefaultOffOverride } from "../Utilities/DefaultOffOverride";
import { XBaseContainer } from "./XBaseContainer";
import { XBaseStackContainer } from "./XBaseStackContainer";
import { IGridArea, IGridContainer } from "./XGridEditLayer";
export declare class XGridRow extends FormControl {
    readonly __type: string;
    height?: number;
    getDesignValidationIssues(): ValidationIssue[];
    getRuntimeValidationIssues(): ValidationIssue[];
    getAddedData(): IDataDefinition | IDataDefinition[] | undefined;
    renderEditUI(): JSX.Element;
    onControlUpdate: () => void;
}
export declare class XGridArea extends XBaseStackContainer implements IGridArea {
    readonly __type: string;
    row: number;
    column: number;
    width: number;
    height: number;
    container?: XGridContainer;
    oneControl: boolean;
    showBorder?: boolean;
    backgroundColorSettings: DefaultOffOverride;
    innerMarginSettings: DefaultOffOverride;
    formBorderSettings: DefaultOffOverride;
    controlAlign: {
        top?: number;
        left?: number;
        width?: number;
        height?: number;
    };
    constructor(row: number, column: number, width?: number, height?: number);
    getStorageData(): object;
    setStorageData(data: object): void;
    onControlUpdate: () => void;
    add(control: FormControl, index?: number): void;
    backgroundColor(): string | undefined | null;
    hasOwnBorder(): boolean | undefined;
    hasBorder(): boolean | undefined;
    borderColor(): string | undefined;
    borderStyle(): BorderStyle | undefined;
    borderWidth(): number | undefined;
    borderRadius(): number | undefined;
    getInnerMargin(): number | undefined;
    renderEditUI(): JSX.Element;
    getDesignValidationIssues(): ValidationIssue[];
    getRuntimeValidationIssues(): ValidationIssue[];
    getAddedData(): IDataDefinition | IDataDefinition[] | undefined;
    onSelect: (event: React.MouseEvent<HTMLDivElement>) => void;
    render(): JSX.Element;
}
export declare class XGridContainer extends XBaseContainer implements IGridContainer {
    readonly __type: string;
    areas: XGridArea[];
    rows: XGridRow[];
    rowsLength: number;
    columnsLength: number;
    innerMargin?: number;
    gapBetweenAreas: number;
    defaultAreaInnerMargin?: number;
    defaultShowAreaBorder?: boolean;
    defaultAreaBorderColor?: string;
    defaultAreaBorderRadius?: number;
    defaultAreaBorderWidth?: number;
    defaultAreaBorderStyle?: BorderStyle;
    defaultAreaBackgroundColor?: string | null;
    private showEditUIDialog;
    getDesignValidationIssues(): ValidationIssue[];
    remove(control: FormControl): void;
    find(id: string): FormControl | null;
    setOrder(id: string, order: number): void;
    add(control: FormControl, index?: number): void;
    getControls(): FormControl[];
    renderEditUI(): JSX.Element;
    addArea(area: XGridArea, index?: number): void;
    removeArea(area: XGridArea): void;
    addRow(row: XGridRow, index?: number): void;
    removeRow(row: XGridRow): void;
    render(): JSX.Element;
    getInnerMargin(): number | undefined;
    getStorageData(): object;
    setStorageData(data: object): void;
}
export declare const GridContainerRender: import("styled-components").StyledComponent<"div", any, {
    padding?: number | undefined;
    hasBorder?: boolean | undefined;
    borderColor?: string | undefined;
    borderWidth?: number | undefined;
    borderRadius?: number | undefined;
    borderStyle?: BorderStyle | undefined;
    backgroundColor?: string | null | undefined;
    gapBetweenAreas?: number | undefined;
    rowsTemplate: string;
}, never>;
export declare const GridCellRender: import("styled-components").StyledComponent<"div", any, {
    padding?: number | undefined;
    hasBorder?: boolean | undefined;
    borderColor?: string | undefined;
    borderWidth?: number | undefined;
    borderRadius?: number | undefined;
    borderStyle?: BorderStyle | undefined;
    backgroundColor?: string | null | undefined;
    height?: number | undefined;
    rowSpan?: number | undefined;
    rowStart: number;
    columnSpan: number;
    columnStart: number;
}, never>;
