
declare type AddRulesType = {
  /**
   * @param fieldName - 待验证的字段名称
   */
  add(fieldName: string): AddRulesType;

  /**
   * 规则配置
   * @param ruleName - 规则名称
   * @param rule - 具体规则
   * @param message - 提示信息
   */
  rule(ruleName: string, rule: Function, message: string): AddRulesType;

  /**
   * 空函数
   */
  useless(): AddRulesType;

  /**
   * 某个字段规则添加完毕
   * @description 每个字段规则添加完成之后，必须调用end方法。形成一开一合的规则
   */
  end(): AddRulesType;

  /**
   * 添加临时规则，生命期非常短只有验证的那一刻
   * @param iRuleUtils 临时规则
   */
  injectRules(iRuleUtils: object): AddRulesType;

  /**
   * 输出配置的规则对象
   */
  toConfig(): object;
}

/**
 * 数据类型验证方法
 * @constructor
 * @param {object} parameter - 传过来的待验证数据
 * @param {object} rules - 验证规则
 * @param {function} options.errorTip - 提示方法
 * @returns {boolean} - 数据验证成功与否
 */
declare function paramType(parameter, rules, Tip): boolean;


declare namespace paramType {

  /**
   * 辅助方法 用于生成字段验证规则
   */
  var chain: () => AddRulesType;

  /**
   * 注册一些全局通用的规则
   * @param rules 
   */
  var injectRules: (rules: object) => void;

}

export default paramType;
