import { ReactNode } from 'react';
import { BigNumber } from 'bignumber.js';
import { Utils } from 'choerodon-ui/dataset';
import { getConfig as getConfigDefault, getProPrefixCls as getProPrefixClsDefault } from '../../../lib/configure/utils';
import { TooltipPlacement, TooltipTheme } from '../../../lib/tooltip';
import { FormatNumberFuncOptions } from '../number-field/NumberField';
import { TooltipProps } from '../tooltip/Tooltip';
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, TagRendererProps } 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(getConfig?: typeof getConfigDefault): import("../number-field/NumberField").FormatNumberFunc;
export declare function getNumberFormatter(getConfig?: typeof getConfigDefault): import("../number-field/NumberField").FormatNumberFunc;
export declare function getCurrencyFormatOptions(getProp: (name: any) => any, getDisplayProp: (name: any) => any, controlLang?: string, getConfig?: typeof getConfigDefault): FormatNumberFuncOptions;
export declare function getNumberFormatOptions(getProp: (name: any) => any, getDisplayProp: (name: any) => any, getValue?: () => number | BigNumber | undefined, value?: number | BigNumber, controlLang?: string, getConfig?: typeof getConfigDefault): FormatNumberFuncOptions;
export declare function processFieldValue(value: any, field: Field | undefined, options: {
    getProp(name: string): any;
    getValue?(): any;
    lang?: string;
    /**
     * 显示类属性值获取（组件属性优先级高于 DataSet Field 属性优先级）
     * @param name
     */
    getDisplayProp?(name: string): any;
}, showValueIfNotFound?: boolean, record?: Record, getConfig?: typeof getConfigDefault): any;
export declare type ProcessValueOptions = {
    dateFormat?: string;
    showInvalidDate?: boolean;
    isNumber?: boolean;
    precision?: number;
    useZeroFilledDecimal?: boolean;
};
export declare function processValue(value: any, options?: ProcessValueOptions): 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;
    tagRenderer?: (props: TagRendererProps) => ReactNode;
    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 | [Tooltip, TooltipProps];
    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;
    isOverflowMaxTagCount: boolean;
};
export declare function renderMultiLine(options: MultiLineRenderOption): {
    lines?: ReactNode;
    multipleValidateMessageLength: number;
};
export declare function renderValidationMessage(validationMessage: ReactNode, showIcon?: boolean, getProPrefixCls?: typeof getProPrefixClsDefault): ReactNode;
export declare function defaultRenderer(renderOption: RenderProps): {} | null | undefined;
export declare function showValidationMessage(e: any, message?: ReactNode, tooltipTheme?: TooltipTheme, tooltipPlacement?: TooltipPlacement, getConfig?: typeof getConfigDefault): void;
