import type { AeadEncryptionContext, AeadInterface } from "@hpke/common";
import { AeadId, NativeAlgorithm } from "@hpke/common";
export declare class AesGcmContext extends NativeAlgorithm implements AeadEncryptionContext {
    private _rawKey;
    private _key;
    constructor(key: ArrayBuffer);
    seal(iv: ArrayBuffer, data: ArrayBuffer, aad: ArrayBuffer): Promise<ArrayBuffer>;
    open(iv: ArrayBuffer, data: ArrayBuffer, aad: ArrayBuffer): Promise<ArrayBuffer>;
    protected _setupKey(): Promise<void>;
    private _importKey;
}
/**
 * The AES-128-GCM for HPKE AEAD implementing {@link AeadInterface}.
 *
 * When using `@hpke/core`, the instance of this class must be specified
 * to the `aead` parameter of {@link CipherSuiteParams} instead of `AeadId.Aes128Gcm`.
 *
 * @example
 *
 * ```ts
 * import {
 *   Aes128Gcm,
 *   CipherSuite,
 *   DhkemP256HkdfSha256,
 *   HkdfSha256,
 * } from "@hpke/core";
 *
 * const suite = new CipherSuite({
 *   kem: new DhkemP256HkdfSha256(),
 *   kdf: new HkdfSha256(),
 *   aead: new Aes128Gcm(),
 * });
 * ```
 */
export declare class Aes128Gcm implements AeadInterface {
    /** AeadId.Aes128Gcm (0x0001) */
    readonly id: AeadId;
    /** 16 */
    readonly keySize: number;
    /** 12 */
    readonly nonceSize: number;
    /** 16 */
    readonly tagSize: number;
    createEncryptionContext(key: ArrayBuffer): AeadEncryptionContext;
}
/**
 * The AES-256-GCM for HPKE AEAD implementing {@link AeadInterface}.
 *
 * When using `@hpke/core`, the instance of this class must be specified
 * to the `aead` parameter of {@link CipherSuiteParams} instead of `AeadId.Aes256Gcm`
 * as follows:
 *
 * @example
 *
 * ```ts
 * import {
 *   Aes256Gcm,
 *   CipherSuite,
 *   DhkemP256HkdfSha256,
 *   HkdfSha256,
 * } from "@hpke/core";
 *
 * const suite = new CipherSuite({
 *   kem: new DhkemP256HkdfSha256(),
 *   kdf: new HkdfSha256(),
 *   aead: new Aes256Gcm(),
 * });
 * ```
 */
export declare class Aes256Gcm extends Aes128Gcm {
    /** AeadId.Aes256Gcm (0x0002) */
    id: AeadId;
    /** 32 */
    keySize: number;
    /** 12 */
    nonceSize: number;
    /** 16 */
    tagSize: number;
}
//# sourceMappingURL=aesGcm.d.ts.map