|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |  | export = utility;export as namespace utility;
// ---------------------------------
/** * @description Types definition by github@ddzy * @see https://github.com/node-modules/utility
 */// ------------------------------------
declare namespace utility {
  /**   * ---------------0_0----------------   * @description Defines For Array   * @see https://github.com/node-modules/utility
   * ---------------0^0----------------   */
  /**   * Static object define   */  type ObjStatic = { [key: string]: any };
  /**   * Array random slice with items count.   * @param {Array} arr   * @param {Number} num, number of sub items.   * @return {Array}   */  function randomSlice(    arr: any[],    num?: number,  ): any[];
  /**   * Remove one exists element from an array   * @param {Array} arr   * @param  {Number} index - remove element index   * @return {Array} the array instance   */  function spliceOne(    arr: any[],    index: number,  ): any[];
  /**   * --------------------0_0----------------   * @description Defines For Crypto   * @see https://github.com/node-modules/utility#md5
   * --------------0^0------------------   */
  /**   * hash   *   * @param {String} method hash method, e.g.: 'md5', 'sha1'   * @param {String|Buffer|Object} s   * @param {String} [format] output string format, could be 'hex' or 'base64'. default is 'hex'.   * @return {String} md5 hash string   * @public   */  function hash(    method: 'md5' | 'sha1',    s: string | Buffer | Object,    format?: 'hex' | 'base64',  ): string;
  /**   * md5 hash   *   * @param {String|Buffer|Object} s   * @param {String} [format] output string format, could be 'hex' or 'base64'. default is 'hex'.   * @return {String} md5 hash string   * @public   */  function md5(    s: string | Buffer | Object,    format?: 'hex' | 'base64',  ): string;
  /**   * sha1 hash   *   * @param {String|Buffer|Object} s   * @param {String} [format] output string format, could be 'hex' or 'base64'. default is 'hex'.   * @return {String} sha1 hash string   * @public   */  function sha1(    s: string | Buffer | Object,    format?: 'hex' | 'base64',  ): string;
  /**   * sha256 hash   *   * @param {String|Buffer|Object} s   * @param {String} [format] output string format, could be 'hex' or 'base64'. default is 'hex'.   * @return {String} sha256 hash string   * @public   */  function sha256(    s: string | Buffer | Object,    format?: 'hex' | 'base64',  ): string;
  /**   * HMAC algorithm.   *   * Equal bash:   *   * ```bash
   * $ echo -n "$data" | openssl dgst -binary -$algorithm -hmac "$key" | openssl $encoding   * ```
   *   * @param {String} algorithm, dependent on the available algorithms supported by the version of OpenSSL on the platform.   *   Examples are 'sha1', 'md5', 'sha256', 'sha512', etc.   *   On recent releases, `openssl list-message-digest-algorithms` will display the available digest algorithms.   * @param {String} key, the hmac key to be used.   * @param {String|Buffer} data, content string.   * @param {String} [encoding='base64']   * @return {String} digest string.   */  function hmac(    algorithm: string,    key: string,    data: string | Buffer,    encoding?: 'base64' | string,  ): string;
  /**   * Base64 encode string.   *   * @param {String|Buffer} s   * @param {Boolean} [urlsafe=false] Encode string s using a URL-safe alphabet,   *   which substitutes - instead of + and _ instead of / in the standard Base64 alphabet.   * @return {String} base64 encode format string.   */  function base64encode(    s: string | Buffer,    urlsafe?: boolean,  ): string;
  /**   * Base64 string decode.   *   * @param {String} encode, base64 encoding string.   * @param {Boolean} [urlsafe=false] Decode string s using a URL-safe alphabet,   *   which substitutes - instead of + and _ instead of / in the standard Base64 alphabet.   * @param {encoding} [encoding=utf8] if encoding = buffer, will return Buffer instance   * @return {String|Buffer} plain text.   */  function base64decode(    encode: string,    urlsafe?: boolean,    encoding?: 'utf8' | 'buffer',  ): string | Buffer;
  /**   * ----------------0_0-----------------   * @description Defines For Date   * @see https://github.com/node-modules/utility#date-utils
   * ---------------0^0------------------   */
  interface IYYYYMMDDHHmmssStaticOptions {    dateSep?: string,    timeSep?: string,  }  interface IDateStructStaticReturns {    YYYYMMDD: number,    H: number,  }
  /**   * Access log format date. format: `moment().format('DD/MMM/YYYY:HH:mm:ss ZZ')`   *   * @return {String}   */  function accessLogDate(d: Date): string;
  /**   * Normal log format date. format: `moment().format('YYYY-MM-DD HH:mm:ss.SSS')`   *   * @return {String}   */  function logDate(    d: string | Date,    msSep?: string,  ): string;
  /**   * `moment().format('YYYY-MM-DD HH:mm:ss')` format date string.   *   * @return {String}   */  function YYYYMMDDHHmmss(    d: Date | string,    options?: IYYYYMMDDHHmmssStaticOptions,  ): string;
  /**   * `moment().format('YYYY-MM-DD')` format date string.   *   * @return {String}   */  function YYYYMMDD(    d: string | Date,    sep?: string,  ): string;
  /**   * return datetime struct.   *   * @return {Object} date   *  - {Number} YYYYMMDD, 20130401   *  - {Number} H, 0, 1, 9, 12, 23   */  function datestruct(    now?: Date,  ): IDateStructStaticReturns;
  /**   * Get Unix's timestamp in seconds.   * @return {Number}   */  function timestamp(    t?: string | number,  ): number | Date;
  /**   * ---------------0_0-------------------   * @description Defines For Function Method   * @see https://github.com/node-modules/utility#others
   * ---------------0^0--------------------   */
  /**   * A empty function.   *   * @return {Function}   * @public   */  function noop(): () => any;
  /**   * Get a function parameter's names.   *   * @param {Function} func   * @param {Boolean} [useCache], default is true   * @return {Array} names   */  function getParamNames(    func: (...args: any[]) => any,    cache?: boolean,  ): string[];
  /**   * ----------------0_0-----------------------   * @description Defines For JSON methods   * @see https://github.com/node-modules/utility#json
   * -----------------0^0-----------------------   */
  interface IJSONStaticOptions {    space?: number | string,    replacer?: (      key: string,      value: any,    ) => any,  }
  function strictJSONParse(    str: string,  ): ObjStatic;
  function readJSONSync(    filepath: string,  ): ObjStatic;
  function writeJSONSync(    filepath: string,    str: string | ObjStatic,    options?: IJSONStaticOptions,  ): void;
  function readJSON(    filepath: string,  ): Promise<any>;
  function writeJSON(    filepath: string,    str: string | ObjStatic,    options?: IJSONStaticOptions,  ): Promise<any>;
  function mkdir(    dir: string,  ): Promise<any>;
  /**   * ------------------0_0------------------------   * @description Defines For Number Methods   * @see https://github.com/node-modules/utility#number-utils
   * --------------------0^0----------------------   */
  /**   * CONSTANTS STATIC   */  const MAX_SAFE_INTEGER: number;  const MIN_SAFE_INTEGER: number;  const MAX_SAFE_INTEGER_STR: string;  const MAX_SAFE_INTEGER_STR_LENGTH: number;
  /**   * Detect a number string can safe convert to Javascript Number.   *   * @param {String} s number format string, like `"123"`, `"-1000123123123123123123"`   * @return {Boolean}   */  function isSafeNumberString(    s: string,  ): boolean;
  /**   * Convert string to Number if string in safe Number scope.   *   * @param {String} s number format string.   * @return {Number|String} success will return Number, otherise return the original string.   */  function toSafeNumber(    s: string | number,  ): number | string;
  /**   * Produces a random integer between the inclusive `lower` and `upper` bounds.   *   * @param {Number} lower The lower bound.   * @param {Number} upper The upper bound.   * @return {Number} Returns the random number.   */  function random(    lower?: number,    upper?: number,  ): number;
  /**   * ------------------0_0--------------------------   * @description Defines For Object Methods   * @see https://github.com/node-modules/utility#objectassign
   * -------------------0^0------------------------   */
  /**   * High performance assign before node6   * @param {Object} target - target object   * @param {Object | Array} objects - object assign from   * @return {Object} - return target object   */  function assign(    target: ObjStatic,    objects: ObjStatic | any[],  ): ObjStatic;
  function has(    obj: ObjStatic,    prop: string,  ): boolean;
  function getOwnEnumerables(    obj: ObjStatic,    ignoreNull?: boolean,  ): string[];
  /**   * generate a real map object(clean object), no constructor, no __proto__   * @param {Object} [obj] - init object, optional   * @return {Object}   */  function map(    obj?: ObjStatic,  ): ObjStatic;
  /**   * -----------------0_0---------------------------   * @description Defines For Optimize Methods   * @see https://github.com/node-modules/utility#argumentstoarray
   * -----------------0^0------------------------   */
  interface ITryStaticReturns {    error: Error | undefined,    value: any,  }
  const UNSTABLE_METHOD: {    /**     * optimize try catch     * @param {Function} fn     * @return {Object}     *   - {Error} error     *   - {Mix} value     */    try: (      fn: (...args: any[]) => any,    ) => ITryStaticReturns,  };
  /**   * avoid if (a && a.b && a.b.c)   * @param {Object} obj   * @param {...String} keys   * @return {Object}   */  function dig(    obj: ObjStatic,    ...args: any[],  ): any;
  /**   * optimize arguments to array   * @param {Arguments} args   * @return {Array}   */  function argumentsToArray(    ...args: any[],  ): any[];
  /**   * -------------------0_0---------------------   * @description Defines For Polyfill Methods   * @see https://github.com/node-modules/utility#timers
   * -------------------0^0-------------------   */
  function setImmediate(    callback: (...args: any[]) => void,    ...args: any[],  ): NodeJS.Immediate;  function setImmediate(    fn: (...args: any[]) => any,    ...args: any[],  ): void;
  /**   * ------------------0_0--------------------   * @description Defines For String Methods   * @see https://github.com/node-modules/utility#others
   * -------------------0^0---------------------   */
  interface IReplaceInvalidHttpHeaderCharReturns {    val: string,    invalid: boolean,  }
  function randomString(    length?: number,    charSet?: string | string[],  ): string;
  /**   * split string to array   * @param  {String} str   * @param  {String} [sep] default is ','   * @return {Array}   */  function split(    str: string,    sep?: string,  ): string[];
  /**   * always optimized   */  function splitAlwaysOptimized(    ...args: any[],  ): string[];
  /**   * Replace string   *   * @param  {String} str   * @param  {String|RegExp} substr   * @param  {String|Function} newSubstr   * @return {String}   */  function replace(    str: string,    substr: string | RegExp,    newSubstr: string | ((...args: any[]) => any),  ): string;
  /**   * Replace invalid http header characters with replacement   *   * @param  {String} val   * @param  {String|Function} replacement - can be `function(char)`   * @return {Object}   */  function replaceInvalidHttpHeaderChar(    val: string,    replacement?: string | ((...args: any[]) => any)  ): IReplaceInvalidHttpHeaderCharReturns;
  /**   * Detect invalid http header characters in a string   *   * @param {String} val   * @return {Boolean}   */  function includesInvalidHttpHeaderChar(    val: string,  ): boolean;
  /**   * ------------------0_0----------------------   * @description Defines For Web Methods   * @see https://github.com/node-modules/utility#decode-and-encode
   * ------------------0^0------------------------   */
  /**   * Escape the given string of `html`.   *   * @param {String} html   * @return {String}   * @public   */  function escape(    test: string,  ): string;
  /**   * Unescape the given string from html   * @param {String} html   * @param {String} type   * @return {String}   * @public   */  function unescape(    html: string,    type?: string,  ): string | ObjStatic;
  /**   * Safe encodeURIComponent, won't throw any error.   * If `encodeURIComponent` error happen, just return the original value.   *   * @param {String} text   * @return {String} URL encode string.   */  function encodeURIComponent(    text: string,  ): string;
  /**   * Safe decodeURIComponent, won't throw any error.   * If `decodeURIComponent` error happen, just return the original value.   *   * @param {String} encodeText   * @return {String} URL decode original string.   */  function decodeURIComponent(    encodeText: string,  ): string;}
 |