/**
 * @license
 * Copyright 2020 Google LLC
 * SPDX-License-Identifier: Apache-2.0
 */
/**
 * Interface for symmetric key ciphers that are indistinguishable against
 * chosen-plaintext attacks.
 *
 * Security guarantees: implementation of this interface do not provide
 * authentication, thus should not be used directly, but only to construct safer
 * primitives such as {@link tink.Aead}.
 *
 */
export interface IndCpaCipher {
    /**
     * Encrypts `plaintext`.
     *
     * @param plaintext the plaintext to be encrypted. It must be
     *     non-null, but can also be an empty (zero-length) byte array.
     * @return resulting ciphertext
     * @throws {SecurityException}
     */
    encrypt(plaintext: Uint8Array): Promise<Uint8Array>;
    /**
     * Decrypts ciphertext with associated authenticated data.
     *
     * @param ciphertext the ciphertext to be decrypted, must be
     *     non-null.
     * @return resulting plaintext
     * @throws {SecurityException}
     */
    decrypt(ciphertext: Uint8Array): Promise<Uint8Array>;
}
