/// <reference types="draft-js" />
/// <reference types="react" />
import * as React from 'react';
import React__default from 'react';

interface AieStyleMap {
    [styleName: string]: {
        css: React__default.CSSProperties;
        aieExclude: string[];
    };
}
/** Interface for the AsupInternalEditor component */
interface AsupInternalEditorProps {
    value: string;
    setValue?: (ret: string) => void;
    addStyle?: React__default.CSSProperties;
    styleMap?: AieStyleMap;
    highlightChanges?: boolean;
    textAlignment?: Draft.DraftComponent.Base.DraftTextAlignment;
    showStyleButtons?: boolean;
    editable?: boolean;
}
declare const AsupInternalEditor: (props: AsupInternalEditorProps) => JSX.Element;

interface AioDropSelectProps {
    value?: string;
    availableValues?: Array<string>;
    setValue?: (value: string) => void;
}
/**
 * Wrapper to preprend Icon button with chosen text
 */
declare const AioDropSelect: ({ value, setValue, availableValues }: AioDropSelectProps) => JSX.Element;

interface AioExpanderProps {
    inputObject: {
        [key: string]: any;
    };
    label?: string;
    showBorders?: boolean;
    updateObject?: (value: any) => void;
    canAddItems?: boolean;
    canMoveItems?: boolean;
    canRemoveItems?: boolean;
}
declare const AioExpander: (props: AioExpanderProps) => JSX.Element;

interface AioIconButtonProps {
    onClick: (ret: string) => void;
    iconName?: string;
    tipText?: string;
    menuItems?: string[];
    leftMenuOffset?: string;
}
declare const AioIconButton: ({ onClick, iconName, tipText, menuItems, leftMenuOffset }: AioIconButtonProps) => JSX.Element;

/** Individual options */
interface AioOption {
    optionName?: AioNewItem;
    type: AioOptionType;
    value: any;
    label?: string;
    availableValues?: string[];
    readOnly?: boolean;
}
interface AioOptionGroup extends Array<AioOption> {
}
/** Individual text replacements */
interface AioReplacementText {
    text: string;
    spaceAfter: boolean;
}
/** Single replacement value, allowing for sublists */
interface AioReplacementValue {
    newText: string;
    subList?: AioReplacementValue[];
}
/** Text replacements, and their replacement matrix */
interface AioReplacement {
    replacementTexts: AioReplacementText[];
    replacementValues: AioReplacementValue[];
    givenName?: string;
    externalName?: string;
}
declare enum AioOptionType {
    string = "string",
    number = "number",
    array = "array",
    object = "object",
    boolean = "boolean",
    select = "select",
    replacements = "replacements"
}
declare enum AioNewItem {
    newKey = "newKey",
    newType = "newType"
}

interface AioReplacmentTableProps {
    replacement: AioReplacement;
    setReplacement: (ret: AioReplacement) => void;
    externalLists?: AioReplacement[];
    dontAskSpace?: boolean;
    dontShowText?: boolean;
}
/**
 * Render an individuial AioReplacement
 * @param props value/setValue pair
 */
declare const AioReplacementTable: ({ replacement, setReplacement, externalLists, dontAskSpace, dontShowText }: AioReplacmentTableProps) => JSX.Element;

interface AitCellData {
    aitid?: string;
    text: string;
    colSpan?: number;
    rowSpan?: number;
    colWidth?: number;
    textIndents?: number;
    replacedText?: string;
    repeatColSpan?: number;
    repeatRowSpan?: number;
}
interface AitRowData {
    aitid?: string;
    cells: AitCellData[];
    spaceAfter?: boolean;
}
interface AitRowGroupData {
    aitid?: string;
    name?: string;
    rows: Array<AitRowData>;
    replacements?: AioReplacement[];
}
interface AitTableData {
    headerData: AitRowGroupData;
    bodyData: AitRowGroupData[];
    rowHeaderColumns: number;
    noRepeatProcessing: boolean;
}

interface AsupInternalTableProps {
    tableData: AitTableData;
    setTableData: (ret: AitTableData) => void;
    externalLists?: AioReplacement[];
    style?: React__default.CSSProperties;
    showCellBorders?: boolean;
    groupTemplates?: AitRowGroupData[] | false;
}
/**
 * Table view for clinical table data
 * @param props
 * @returns
 */
declare const AsupInternalTable: ({ tableData, setTableData, externalLists, style, showCellBorders, groupTemplates, }: AsupInternalTableProps) => JSX.Element;

interface AsupInternalWindowProps {
    Title: string;
    Visible: boolean;
    onClose: () => void;
    style?: React.CSSProperties;
    children?: React.ReactChild | React.ReactChild[];
}
declare const AsupInternalWindow: (props: AsupInternalWindowProps) => JSX.Element;

export { AioDropSelect, AioExpander, AioIconButton, AioOption, AioOptionGroup, AioReplacement, AioReplacementTable, AioReplacementText, AioReplacementValue, AitCellData, AitRowData, AitRowGroupData, AitTableData, AsupInternalEditor, AsupInternalTable, AsupInternalWindow };
