import { ReactNode } from 'react';
import { BigNumber } from 'bignumber.js';
import { Utils } from 'choerodon-ui/dataset';
import { TooltipTheme, TooltipPlacement } from '../../../lib/tooltip';
import formatCurrency from '../formatter/formatCurrency';
import formatNumber from '../formatter/formatNumber';
import { FormatNumberFuncOptions } from '../number-field/NumberField';
import ValidationResult from '../validator/ValidationResult';
import DataSet from '../data-set/DataSet';
import Record from '../data-set/Record';
import Field, { HighlightProps } from '../data-set/Field';
import { Renderer, RenderProps } from './FormField';
import { Tooltip } from '../core/enum';
declare const toRangeValue: typeof Utils.toRangeValue;
declare const getDateFormatByFieldType: typeof Utils.getDateFormatByFieldType;
declare const getDateFormatByField: typeof Utils.getDateFormatByField;
export { toRangeValue, getDateFormatByFieldType, getDateFormatByField, };
export declare function fromRangeValue(value: any[], range?: boolean | [string, string]): any;
export declare function toMultipleValue(value: any, range?: boolean | [string, string]): any[];
export declare function transformHighlightProps(highlight: true | ReactNode | HighlightProps, props: HighlightProps): HighlightProps;
export declare function getCurrencyFormatter(): typeof formatCurrency;
export declare function getNumberFormatter(): typeof formatNumber;
export declare function getCurrencyFormatOptions(getProp: (name: any) => any, controlLang?: string): FormatNumberFuncOptions;
export declare function getNumberFormatOptions(getProp: (name: any) => any, getValue?: () => number | BigNumber | undefined, value?: number | BigNumber, controlLang?: string): FormatNumberFuncOptions;
export declare function processFieldValue(value: any, field: Field | undefined, options: {
    getProp(name: string): any;
    getValue?(): any;
    lang?: string;
}, showValueIfNotFound?: boolean, record?: Record): any;
export declare function processValue(value: any, format?: string, showInvalidDate?: boolean): any;
export declare function isFieldValueEmpty(value: any, range?: boolean | [string, string], multiple?: boolean, valueField?: string, textField?: string): boolean;
export declare type MultipleRenderOption = {
    range?: boolean | [string, string] | undefined;
    maxTagCount?: number | undefined;
    maxTagPlaceholder?: ReactNode | ((omittedValues: any[]) => ReactNode);
    prefixCls?: string | undefined;
    disabled?: boolean | undefined;
    readOnly?: boolean | undefined;
    validationResults?: ValidationResult[] | undefined;
    tooltipTheme?: TooltipTheme;
    isMultipleBlockDisabled?(v: any): boolean;
    processRenderer(v: any, repeat?: number): ReactNode;
    renderValidationResult(result: ValidationResult): ReactNode;
    handleMultipleValueRemove?(e: any, value: any, index: number): void;
    isValidationMessageHidden(message?: ReactNode): boolean | undefined;
    showValidationMessage(e: any, message?: ReactNode, tooltipTheme?: TooltipTheme, tooltipPlacement?: TooltipPlacement): void;
    getKey?(v: any): string;
};
export declare type RangeRenderOption = {
    repeat?: number | undefined;
    processRenderer(v: any, repeat?: number): ReactNode;
};
export declare type MultiLineRenderOption = {
    prefixCls?: string | undefined;
    field: Field;
    record?: Record;
    dataSet?: DataSet;
    renderer?: Renderer;
    name?: string;
    tooltip?: Tooltip;
    labelTooltip?: Tooltip;
    renderValidationResult(result: ValidationResult): ReactNode;
    isValidationMessageHidden(message?: ReactNode): boolean | undefined;
    processValue(value: any): ReactNode;
};
export declare function renderRangeValue(value: any, option: RangeRenderOption): JSX.Element | undefined;
export declare function getValueKey(v: any): any;
export declare function renderMultipleValues(value: any, option: MultipleRenderOption): {
    tags: ReactNode;
    multipleValidateMessageLength: number;
};
export declare function renderMultiLine(options: MultiLineRenderOption): {
    lines?: ReactNode;
    multipleValidateMessageLength: number;
};
export declare function renderValidationMessage(validationMessage: ReactNode, showIcon?: boolean): ReactNode;
export declare function defaultRenderer(renderOption: RenderProps): {} | null | undefined;
export declare function showValidationMessage(e: any, message?: ReactNode, tooltipTheme?: TooltipTheme, tooltipPlacement?: TooltipPlacement): void;
