/// <reference types="react" />
/**
 * 用于列表，字典等 Render 的 Value，由 name(显示) 和 value(实际取值) 两个字段组成
*/
export interface Value {
    /**
     * 显示在页面上的名称
    */
    name: string;
    /**
     * 实际取值
    */
    value: number | string;
}
/**
 * 状态Map格式，最多支持五组状态，分别为 success、processing、default、error、warning
*/
export interface StatusMap {
    success?: Value;
    processing?: Value;
    default?: Value;
    error?: Value;
    warning?: Value;
}
/**
 * Render 实体，一般情况下，可以直接用于 antd 框架里面的各种 列render 字段 render 等
 * 另外 ，render 具有一个 update 方法，当数据更新时，可以调用 render.update方法来进行内部更新
 * 每种 render 的内部更新传递的参数可能有所不同
*/
export interface Render {
    (value: any): string;
    /**
     * 内部数据更新函数，
     * listRender ： 传一个数组 any[]
     * statusRender ： 传一个 StatusMap
     * momentRender : 不用传参数，会将Render时间移至当前最新时间
     * htmlRender : 无此方法
    */
    update: (data?: any) => void;
}
export interface DictRender {
    (value: any): string;
    nodes: Value[];
    reverse: (txt?: string) => string;
    optAs: (nameField?: string, valueField?: string, shift?: any) => any[];
    get: (txt?: string) => {
        value: string;
        name: string;
        description: string;
    };
    getByName: (txt?: string) => {
        value: string;
        name: string;
        description: string;
    };
}
declare function dictRender(type: any, def?: string, render?: (t: any, o: any) => any): DictRender;
export default abstract class {
    /**
     * 字符串截取 Render
     * @param len 截取长度，默认为 20
     * @param hasDot 是否有3个省略号 默认为 true
     * @param className className
    */
    static strRender(len?: number, hasDot?: boolean, className?: string, onlyText?: boolean): Render;
    /**
     * 长字符串截取 Render， 可copy
     * @param len 截取长度，默认为 20
     * @param hasDot 是否有3个省略号 默认为 true
     * @param className className
     *
     * @returns 不能为text
    */
    static longstrRender(len?: number, hasDot?: boolean): Render;
    /**
     * 列表 Render 构造器
     * @param arr 默认为一个空数组
     * @param value 数据对应取值的字段 默认为 'id'
     * @param name 数据对应显示的字段 默认为 'name'
     * @param def 数据没有找到时的字段 默认为 '未知'
    */
    static listRender(arr?: any[], value?: string, name?: string, def?: string | false, onlyText?: boolean): Render;
    /**
     * 状态 Render 构造器
     * @param statusMap 一个StatusMap 默认为  { success: { name: '正常', value: 0 }, error: { name: '异常', value: 1 } }
     * @param def 数据没有找到时的显示名称 默认为 '未知'
    */
    static statusRender(statusMap?: StatusMap, def?: string | false, onlyText?: boolean): Render;
    /**
     * Monment 时间 Render 构造器,可以在近一段时间内显示 （x小时前）之类的字串
     * @param time 是否显示时分秒，默认为 true 即 `YYYY-MM-DD HH:mm:ss`, 设置为 `false` 则显示为'YYYY-MM-DD'
     * @param nearly 最近 {x} 天 时，转换为 moment 方式显示，比如 5秒前，15小时前，2天前等等。 默认为 3
     *
    */
    static momentRender(time?: boolean, nearly?: number, onlyText?: boolean): Render;
    /**
     *
     * 时间 Render 构造器
     * @param 时间
    */
    static dateRender(format?: string, onlyText?: boolean): Render;
    /**
     *
     * 容量 Render 构造器
     * @param byte number 大小
    */
    static sizeRender(onlyText?: boolean): Render;
    /**
     * 返回一个 htmlRender，用于显示自定义的html,会用div包住
     * @param className 包住自定义html的 className 默认为空
    */
    static htmlRender(className?: string): (val: any) => JSX.Element;
    /**
     * 角色权限Render
     * */
    static roleRender(role: any, render: any): any;
    /**
     * 字典表Render
     * */
    static dictRender: typeof dictRender;
}
export {};
