/**
 * @license
 * Copyright 2022 Google LLC
 * SPDX-License-Identifier: Apache-2.0
 */
/**
 * Interface for Hybrid Public Key Encryption (HPKE) authenticated encryption
 * with associated data (AEAD).
 *
 * HPKE RFC is available at https://www.rfc-editor.org/rfc/rfc9180.html.
 */
export interface HpkeAead {
    /**
     * Performs authenticated encryption of `plaintext` and `associatedData` using
     * `key` and `nonce` according to the HPKE AEAD specification.
     *
     * @see https://www.rfc-editor.org/rfc/rfc9180.html#name-encryption-and-decryption.
     */
    seal({ key, nonce, plaintext, associatedData }: {
        key: Uint8Array;
        nonce: Uint8Array;
        plaintext: Uint8Array;
        associatedData: Uint8Array;
    }): Promise<Uint8Array>;
    /**
     * Performs authenticated decryption of `ciphertext` and `associatedData`
     * using `key` and `nonce` according to the HPKE AEAD specification.
     *
     * @see https://www.rfc-editor.org/rfc/rfc9180.html#name-encryption-and-decryption.
     */
    open({ key, nonce, ciphertext, associatedData }: {
        key: Uint8Array;
        nonce: Uint8Array;
        ciphertext: Uint8Array;
        associatedData: Uint8Array;
    }): Promise<Uint8Array>;
    /**
     * Returns the HPKE AEAD algorithm identifier for the underlying
     * AEAD implementation.
     *
     * @see https://www.rfc-editor.org/rfc/rfc9180.html#name-authenticated-encryption-wi.
     */
    getAeadId(): Uint8Array;
    /**
     * Returns the key length (in bytes) for this algorithm (i.e., parameter
     * 'Nk' in HPKE RFC).
     */
    getKeyLength(): number;
    /**
     * Returns the nonce length (in bytes) for this algorithm (i.e.,
     * parameter 'Nn' in HPKE RFC).
     */
    getNonceLength(): number;
}
