/// <reference types="node" />
import strdm from 'strdm';
import https from 'https';
declare namespace WxSign {
    interface StateType {
        key: string;
        secret?: string;
        params?: ParamsType;
        agent?: {
            key: string | Buffer;
            cert: string | Buffer;
        };
    }
    type ParamsType = Record<string, string | number | boolean | Record<string, unknown> | Array<unknown>>;
}
/**
 * 兼容微信/企业微信支付参数加密使用
 * Compatible with WeChat / WeWork payment parameter encryption
 */
declare class WxSign {
    state: WxSign.StateType;
    /**
     * 兼容微信/企业微信支付参数加密使用
     * Compatible with WeChat / WeWork payment parameter encryption
     * @param state
     */
    constructor(state: WxSign.StateType);
    /**
     * generate random string
     * If you just want to generate random strings, you can install strdm library
     * 如果只想生成随机字符串，可以安装 strdm 库
     * @link see strdm library https://www.npmjs.com/package/strdm
     * @param length
     * @param options
     * @returns
     */
    generateString(length?: number, options?: string | boolean | strdm.Options): string;
    /**
     * generate only order
     * @param num
     * @returns
     */
    generateOrder(num: number): string;
    /**
     * generate sign
     * @param type
     * @returns
     */
    generateSign(type?: 'workwx_sign' | 'sign'): string;
    /**
     * generate sign XML
     * @param field
     * @returns
     */
    generateSignXML(field: string): string;
    /**
     * generate agent
     * @returns
     */
    generateAgent(): https.Agent;
    /**
     * setData
     * @param key
     * @param value
     * @returns
     */
    setData(key: string, value: WxSign.ParamsType): WxSign;
    /**
     * setParams
     * @param params
     * @returns
     */
    setParams(params?: WxSign.ParamsType): this;
}

export = WxSign;