/**
 * @license
 * Copyright 2020 Google LLC
 * SPDX-License-Identifier: Apache-2.0
 */
import { Aead } from '../aead/internal/aead';
import { Mac } from '../mac/internal/mac';
import { IndCpaCipher } from './ind_cpa_cipher';
/**
 * This primitive performs an encrypt-then-Mac operation on plaintext and
 * additional authenticated data (aad).
 *
 * The Mac is computed over `aad || ciphertext || size of aad`, thus it
 * doesn't violate https://en.wikipedia.org/wiki/Horton_Principle.
 *
 * This implementation is based on
 * http://tools.ietf.org/html/draft-mcgrew-aead-aes-cbc-hmac-sha2-05.
 *
 * @final
 */
export declare class EncryptThenAuthenticate extends Aead {
    private readonly cipher;
    private readonly ivSize;
    private readonly mac;
    private readonly tagSize;
    /**
     * @param ivSize the IV size in bytes
     * @param tagSize the MAC tag size in bytes
     * @throws {InvalidArgumentsException}
     */
    constructor(cipher: IndCpaCipher, ivSize: number, mac: Mac, tagSize: number);
    /**
     * The plaintext is encrypted with an {@link IndCpaCipher}, then MAC
     * is computed over `aad || ciphertext || t` where t is aad's length in bits
     * represented as 64-bit bigendian unsigned integer. The final ciphertext
     * format is `ind-cpa ciphertext || mac`.
     *
     */
    encrypt(plaintext: Uint8Array, associatedData?: Uint8Array): Promise<Uint8Array>;
    /**
     */
    decrypt(ciphertext: Uint8Array, associatedData?: Uint8Array): Promise<Uint8Array>;
}
/**
 * @param ivSize the size of the IV
 * @param hmacHashAlgo accepted names are SHA-1, SHA-256 and SHA-512
 * @param tagSize the size of the tag
 * @throws {InvalidArgumentsException}
 * @static
 */
export declare function aesCtrHmacFromRawKeys(aesKey: Uint8Array, ivSize: number, hmacHashAlgo: string, hmacKey: Uint8Array, tagSize: number): Promise<EncryptThenAuthenticate>;
