/// <reference types="node" />
import * as crypto from 'crypto';
export declare enum SIGN_TYPE {
    SIGN_TYPE_HMACSHA256 = "HMAC-SHA256",
    SIGN_TYPE_MD5 = "MD5"
}
export declare class Kits {
    static FIELD_SIGN: string;
    static FIELD_SIGN_TYPE: string;
    /**
     * AES-128-CBC 加密方法
     * @param key  加密key
     * @param iv   向量
     * @param data 需要加密的数据
     */
    static aes128cbcEncrypt(key: Buffer, iv: Buffer, data: string): string;
    /**
     * AES-128-CBC     解密方法
     * @param key      解密的key
     * @param iv       向量
     * @param crypted  密文
     */
    static aes128cbcDecrypt(key: Buffer, iv: Buffer, crypted: string): string;
    /**
     * AES-256-ECB 加密方法
     * @param key  加密key
     * @param iv   向量
     * @param data 需要加密的数据
     */
    static aes256ecbEncrypt(key: Buffer, iv: Buffer, data: string): string;
    /**
     * AES-256-ECB     解密方法
     * @param key      解密的key
     * @param iv       向量
     * @param crypted  密文
     */
    static aes256ecbDecrypt(key: Buffer, iv: Buffer, crypted: string): string;
    /**
     * hmacsha256 加密
     * @param data
     * @param key
     */
    static hmacsha256(data: string, key: string): string;
    /**
     * sha256 加密
     * @param data
     */
    static sha256(data: string): string;
    /**
     * sha256 加密
     * @param data
     */
    static sha256x(data: crypto.BinaryLike): string;
    /**
     * sha1加密
     * @param data
     */
    static sha1(data: string): string;
    /**
     * md5 加密
     * @param data
     */
    static md5(data: string): string;
    static hash(data: string, algorithm: string): string;
    static hashx(data: crypto.BinaryLike, algorithm: string): string;
    /**
     * SHA256withRSA
     * @param data 待加密字符
     * @param privatekey 私钥key
     */
    static sha256WithRsa(data: string, privatekey: Buffer): string;
    /**
     * SHA256withRSA 验证签名
     * @param publicKey 公钥key
     * @param signature 待验证的签名串
     * @param data 需要验证的字符串
     */
    static sha256WithRsaVerify(publicKey: Buffer, signature: string, data: string): boolean;
    /**
     * AEAD_AES_256_GCM 解密
     * @param key
     * @param nonce
     * @param associatedData
     * @param ciphertext
     */
    static aes256gcmDecrypt(key: string, nonce: string, associatedData: string, ciphertext: string): string;
    /**
     * 随机生成字符串
     */
    static generateStr(): string;
    /**
     * 生成签名
     * @param data
     * @param key api key
     * @param signTypeParam 签名类型
     */
    static generateSignature(data: any, key: string, signTypeParam: SIGN_TYPE, signKeyType?: SIGN_KEY_TYPE): string;
    /**
     * 生成带有签名的 xml 数据
     * @param data
     * @param key
     * @param signType
     */
    static generateSignedXml(data: object, key: string, signType: SIGN_TYPE): Promise<any>;
    /**
     * xml 字符串转换成对象
     * @param xmlStr
     */
    static xml2obj(xmlStr: string): Promise<any>;
    /**
     * 普通对象转换成 xml 字符串
     * @param obj
     */
    static obj2xml(obj: Object): Promise<any>;
}
export declare enum SIGN_KEY_TYPE {
    KEY = "key",
    SECRET = "secret"
}
