import * as sm4 from "./sm4.js";
/**
 * sm4传参和返回的类型，不管是传参还是返回值固定是这几个
 */
export type SM4DataType = string | Uint8Array | ArrayBuffer | number[];
/**
 * sm4通用配置
 */
export interface SM4Options {
    mode?: keyof typeof sm4.MODE;
    iv?: SM4DataType;
    padding?: "pkcs#7";
    output?: keyof typeof sm4.OUTPUT;
}
/**
 * sm4 加密
 * @param {string} str 字符串
 * @param {string} key 秘钥
 * @param {Object} options 配置
 * @returns {string} 加密后的字符串
 */
export declare function sm4Encrypt(str: string, key: SM4DataType, options?: SM4Options): SM4DataType;
/**
 * sm4 解密
 * @param {string} str 字符串
 * @param {string} key 秘钥
 * @param {Object} options 配置
 * @returns {string} 解密后的数据
 */
export declare function sm4Decrypt(str: string, key: SM4DataType, options?: SM4Options): SM4DataType;
/**
 * 生成sm4的key
 * @param {string} inputFormat 输入类型 可以任意字符串，其中固定的uint8array、array、hex这3个字符串，会对应生成类型数据
 * @returns {SM4DataType} 生成的key
 */
export declare const generateSM4Key: (inputFormat?: string) => SM4DataType;
/**
 * 生成sm4的iv
 * @param {string} inputFormat 输入类型 可以任意字符串，其中固定的uint8array、array、hex这3个字符串，会对应生成类型数据
 * @returns {SM4DataType} 生成的iv
 */
export declare const generateSM4Iv: (inputFormat?: string) => SM4DataType;
export declare const SM4: {
    MODE: {
        ECB: string;
        CBC: string;
    };
    PADDING: string;
    OUTPUT: {
        HEX: string;
        UTF8: string;
        ARRAY: string;
        UINT8ARRAY: string;
        ARRAYBUFFER: string;
    };
};
