/**
 *
 * 2key-ratchet
 * Copyright (c) 2016 Peculiar Ventures, Inc
 * Based on https://whispersystems.org/docs/specifications/doubleratchet/ and
 * https://whispersystems.org/docs/specifications/x3dh/ by Open Whisper Systems
 *
 */
import { HMACCryptoKey } from "../type";
export declare class Secret {
    /**
     * Returns ArrayBuffer of random bytes
     *
     * @static
     * @param {number} size size of output buffer
     * @returns
     *
     * @memberOf Secret
     */
    static randomBytes(size: number): ArrayBuffer;
    /**
     * Calculates digest
     *
     * @static
     * @param {string} alg
     * @param {ArrayBuffer} message
     * @returns
     *
     * @memberOf Secret
     */
    static digest(alg: string, message: ArrayBuffer): PromiseLike<ArrayBuffer>;
    /**
     * Encrypts data
     *
     * @static
     * @param {CryptoKey} key
     * @param {ArrayBuffer} data
     * @param {ArrayBuffer} iv
     * @returns
     *
     * @memberOf Secret
     */
    static encrypt(key: CryptoKey, data: ArrayBuffer, iv: ArrayBuffer): PromiseLike<ArrayBuffer>;
    /**
     * Decrypts data
     *
     * @static
     * @param {CryptoKey} key
     * @param {ArrayBuffer} data
     * @param {ArrayBuffer} iv
     * @returns
     *
     * @memberOf Secret
     */
    static decrypt(key: CryptoKey, data: ArrayBuffer, iv: ArrayBuffer): PromiseLike<ArrayBuffer>;
    /**
     * Creates HMAC key from raw data
     *
     * @static
     * @param {ArrayBuffer} raw
     * @returns
     *
     * @memberOf Secret
     */
    static importHMAC(raw: ArrayBuffer): PromiseLike<CryptoKey>;
    /**
     * Creates AES key from raw data
     *
     * @static
     * @param {ArrayBuffer} raw
     * @returns
     *
     * @memberOf Secret
     */
    static importAES(raw: ArrayBuffer): PromiseLike<CryptoKey>;
    /**
     * Calculates signature
     *
     * @static
     * @param {CryptoKey} key
     * @param {ArrayBuffer} data
     * @returns
     *
     * @memberOf Secret
     */
    static sign(key: CryptoKey, data: ArrayBuffer): Promise<ArrayBuffer>;
    /**
     * HKDF rfc5869
     *
     * @static
     * @param {ArrayBuffer} IKM input keying material
     * @param {number} [keysCount] amount of calculated keys
     * @param {CryptoKey} [salt] salt value (a non-secret random value)
     * - if not provided, it is set to a string of HashLen zeros.
     * @param {any} [info=new ArrayBuffer(0)]
     * @returns
     *
     * @memberOf AsymmetricRatchet
     */
    static HKDF(IKM: ArrayBuffer, keysCount?: number, salt?: HMACCryptoKey, info?: ArrayBuffer): Promise<ArrayBuffer[]>;
}
