import React from "react";
import { DraftComponent } from "draft-js";
export interface AieStyleMap {
    [styleName: string]: {
        css: React.CSSProperties;
        aieExclude: string[];
    };
}
export const toHtml: (text: string) => string;
export const fromHtml: (text: string) => string;
interface AioIconButtonProps {
    id: string;
    onClick?: (ret: string) => void;
    iconName?: string;
    tipText?: string;
    popUpTip?: boolean;
    menuItems?: string[];
    leftMenuOffset?: string;
    style?: React.CSSProperties;
}
export const AioIconButton: ({ id, onClick, iconName, tipText, popUpTip, menuItems, leftMenuOffset, style, }: AioIconButtonProps) => JSX.Element;
interface AioDropSelectProps {
    id: string;
    value?: string;
    availableValues?: Array<string>;
    setValue?: (value: string) => void;
}
/**
 * Wrapper to preprend Icon button with chosen text
 */
export const AioDropSelect: ({ id, value, setValue, availableValues, }: AioDropSelectProps) => JSX.Element;
interface AsupInternalWindowProps {
    id: string;
    title: string;
    visible: boolean;
    onClose: () => void;
    style?: React.CSSProperties;
    children?: React.ReactChild | React.ReactChild[];
}
export const AsupInternalWindow: (props: AsupInternalWindowProps) => JSX.Element;
/** Individual options */
export interface AioOption {
    optionName?: AioNewItem;
    type: AioOptionType;
    value: unknown;
    label?: string;
    availableValues?: string[];
    readOnly?: boolean;
}
/** Text replacements, and their replacement matrix */
export interface AioReplacement {
    airid?: string;
    oldText: string;
    newTexts: AioReplacementValues[];
    includeTrailing?: boolean;
    externalName?: string;
}
export interface AioReplacementValues {
    airid?: string;
    texts: string[];
    spaceAfter?: boolean;
    subLists?: AioReplacement[];
}
export interface AioExternalReplacements {
    givenName: string;
    newTexts: AioReplacementValues[];
}
export interface AioExternalSingle {
    airid?: string;
    oldText?: string;
    newText?: string;
}
enum AioOptionType {
    string = "string",
    number = "number",
    array = "array",
    object = "object",
    boolean = "boolean",
    select = "select",
    replacements = "replacements"
}
enum AioNewItem {
    newKey = "newKey",
    newType = "newType"
}
interface AioReplacementValuesDisplayProps {
    id: string;
    airid?: string;
    texts?: string[];
    spaceAfter?: boolean;
    subLists?: AioReplacement[];
    setReplacementValue?: (ret: AioReplacementValues) => void;
    dontAskSpace?: boolean;
    dontAskTrail?: boolean;
    externalLists?: AioExternalReplacements[];
}
export const AioReplacementValuesDisplay: ({ id, airid, texts, spaceAfter, subLists, setReplacementValue, dontAskSpace, dontAskTrail, externalLists, }: AioReplacementValuesDisplayProps) => JSX.Element;
interface AioReplacmentDisplayProps {
    id: string;
    airid?: string;
    oldText?: string;
    newTexts: AioReplacementValues[];
    includeTrailing?: boolean;
    externalName?: string;
    setReplacement?: (ret: AioReplacement) => void;
    externalLists?: AioExternalReplacements[];
    dontAskSpace?: boolean;
    dontAskTrail?: boolean;
    noText?: boolean;
}
/**
 * Render an individuial AioReplacement
 * @param props value/setValue pair
 */
export const AioReplacementDisplay: ({ id, airid, oldText, newTexts, includeTrailing, externalName, setReplacement, externalLists, dontAskSpace, dontAskTrail, noText: noOldText, }: AioReplacmentDisplayProps) => JSX.Element;
interface AioStringProps {
    id: string;
    label?: string;
    value?: string;
    setValue?: (value: string) => void;
}
export const AioString: (props: AioStringProps) => JSX.Element;
interface AioExpanderProps {
    id: string;
    inputObject?: {
        [key: string]: any;
    };
    label?: string;
    showBorders?: boolean;
    updateObject?: (value: any) => void;
    canAddItems?: boolean;
    canMoveItems?: boolean;
    canRemoveItems?: boolean;
}
export const AioExpander: (props: AioExpanderProps) => JSX.Element;
export interface AitCellData {
    aitid?: string;
    text: string;
    justifyText?: DraftComponent.Base.DraftTextAlignment | "decimal" | "default";
    comments?: string;
    colWidth?: number;
    textIndents?: number;
    replacedText?: string;
    spaceAfterRepeat?: boolean;
}
interface AitHeaderCellData extends AitCellData {
    colSpan?: number;
    rowSpan?: number;
    repeatColSpan?: number;
    repeatRowSpan?: number;
    spaceAfterSpan?: number;
}
export interface AitRowData {
    aitid?: string;
    rowRepeat?: string;
    cells: AitCellData[];
    spaceAfter?: boolean;
}
interface AitHeaderRowData extends AitRowData {
    cells: AitHeaderCellData[];
}
export interface AitRowGroupData {
    aitid?: string;
    name?: string;
    rows: AitRowData[];
    comments?: string;
    spaceAfter?: boolean;
    replacements?: AioReplacement[];
}
interface AitHeaderGroupData extends AitRowGroupData {
    rows: AitHeaderRowData[];
}
export interface AitTableData {
    headerData?: AitHeaderGroupData | false;
    bodyData?: AitRowGroupData[];
    comments?: string;
    rowHeaderColumns?: number;
    noRepeatProcessing?: boolean;
    decimalAlignPercent?: number;
}
interface AsupInternalTableProps {
    id: string;
    tableData: AitTableData;
    isEditable?: boolean;
    setTableData?: (ret: AitTableData) => void;
    processedDataRef?: React.MutableRefObject<AitTableData | undefined>;
    externalLists?: AioExternalReplacements[];
    externalSingles?: AioExternalSingle[];
    style?: React.CSSProperties;
    showCellBorders?: boolean;
    groupTemplates?: AitRowGroupData[] | false;
    commentStyles?: AieStyleMap;
    cellStyles?: AieStyleMap;
    colWidthMod?: number;
    initialDecimalAlignPercent?: number;
    defaultCellWidth?: number;
    noTableOptions?: boolean;
}
/**
 * Table view for clinical table data
 * @param props
 * @returns
 */
export const AsupInternalTable: ({ id, tableData, isEditable, setTableData, processedDataRef, externalLists, externalSingles, style, showCellBorders, groupTemplates, commentStyles, cellStyles, colWidthMod, initialDecimalAlignPercent, defaultCellWidth, noTableOptions, }: AsupInternalTableProps) => import("react/jsx-runtime").JSX.Element;
export const newReplacementValues: () => AioReplacementValues;
export const newExternalReplacements: () => AioExternalReplacements;
export const newExternalSingle: () => AioExternalSingle;
/**
 * Add newRowGroupTemplate to existing body
 * @param l - Length of row
 * @param newRowGroupTemplate
 * @returns New row group
 */
export const newRowGroup: (defaultCellWidth: number, l?: number, newRowGroupTemplate?: AitRowGroupData) => AitRowGroupData;
interface oldReplacementText {
    text: string;
    spaceAfter: boolean;
}
interface oldReplacementValue {
    newText: string;
    subList?: oldReplacementValue[];
}
interface oldReplacement {
    airid?: string;
    replacementTexts: oldReplacementText[];
    replacementValues: oldReplacementValue[];
    givenName?: string;
    externalName?: string;
}
export function updateReplacementVersion(reps?: AioReplacement[] | oldReplacement[]): AioReplacement[];
export function updateReplToExtl(reps: AioExternalReplacements[] | oldReplacement[] | {
    name: string;
    list: oldReplacement[];
}[]): AioExternalReplacements[];
interface OldTableData {
    headerData?: OldRowGroupData;
    bodyData?: OldRowGroupData[];
    comments?: string;
    rowHeaderColumns?: number;
    noRepeatProcessing?: boolean;
}
interface OldRowGroupData {
    aitid?: string;
    name?: string;
    rows: AitRowData[];
    comments?: string;
    spaceAfter?: boolean;
    replacements?: AioReplacement[] | oldReplacement[];
}
export const updateTableDataVersion: (inData: OldTableData | AitTableData, defaultCellWidth: number) => AitTableData;
export interface AifBlockLine {
    aifid?: string;
    left?: string | null;
    center?: string | null;
    right?: string | null;
    addBelow?: boolean;
    canEdit?: boolean;
    canRemove?: boolean;
    canMove?: boolean;
    canChangeType?: boolean;
}
export const enum AifLineType {
    leftOnly = "Left only",
    centerOnly = "Center only",
    leftAndRight = "Left and Right",
    leftCenterAndRight = "Left, Center and Right"
}
interface OldBlockLine {
    aifid?: string;
    left?: string | false;
    centre?: string | false;
    right?: string | false;
    addBelow?: boolean;
    canEdit?: boolean;
    canRemove?: boolean;
    canMove?: boolean;
}
export const updateLineDisplayVersion: (inArray: OldBlockLine[] | AifBlockLine[]) => AifBlockLine[];
/** Interface for the AsupInternalEditor component */
interface AsupInternalEditorProps {
    id: string;
    value: string;
    setValue?: (ret: string) => void;
    style?: React.CSSProperties;
    styleMap?: AieStyleMap;
    textAlignment?: Draft.DraftComponent.Base.DraftTextAlignment | "decimal" | "default";
    decimalAlignPercent?: number;
    showStyleButtons?: boolean;
    editable?: boolean;
}
export const AsupInternalEditor: ({ id, value, setValue, style, styleMap, textAlignment, showStyleButtons, editable, decimalAlignPercent, }: AsupInternalEditorProps) => import("react/jsx-runtime").JSX.Element;
interface AsupInternalBlockProps {
    id: string;
    lines: AifBlockLine[];
    setLines?: (ret: AifBlockLine[]) => void;
    minLines?: number;
    maxLines?: number;
    externalSingles?: AioExternalSingle[];
    styleMap?: AieStyleMap;
    defaultType?: AifLineType;
    canChangeType?: boolean;
    style?: React.CSSProperties;
}
export const AsupInternalBlock: ({ id, lines, setLines, minLines, maxLines, externalSingles, styleMap, defaultType, canChangeType, style, }: AsupInternalBlockProps) => JSX.Element;

//# sourceMappingURL=asupinternalcomponents.d.ts.map
