/**
 * @license
 * Copyright 2020 Google LLC
 * SPDX-License-Identifier: Apache-2.0
 */
import * as KeyManager from '../internal/key_manager';
import { PbKeyData, PbMessage } from '../internal/proto';
import { Constructor } from '../internal/util';
import { Aead } from './internal/aead';
/**
 * @final
 */
declare class AesGcmKeyFactory implements KeyManager.KeyFactory {
    newKey(keyFormat: PbMessage | Uint8Array): any;
    newKeyData(serializedKeyFormat: Uint8Array): any;
    private static validateKeyFormat;
    /**
     * The input keyFormat is either deserialized (in case that the input is
     * Uint8Array) or checked to be an AesGcmKeyFormat-proto (otherwise).
     *
     */
    private static getKeyFormatProto;
    private static deserializeKeyFormat;
}
/**
 * @final
 */
export declare class AesGcmKeyManager implements KeyManager.KeyManager<Aead> {
    private static readonly SUPPORTED_PRIMITIVE;
    static KEY_TYPE: string;
    private readonly keyFactory;
    /** Visible for testing. */
    constructor();
    getPrimitive(primitiveType: Constructor<Aead>, key: PbKeyData | PbMessage): Promise<Aead>;
    doesSupport(keyType: string): boolean;
    getKeyType(): string;
    getPrimitiveType(): typeof Aead;
    getVersion(): number;
    getKeyFactory(): AesGcmKeyFactory;
    private static validateKey;
    /**
     * The input key is either deserialized (in case that the input is
     * KeyData-proto) or checked to be an AesGcmKey-proto (otherwise).
     *
     */
    private static getKeyProto;
    /**
     * It validates the key type and returns a deserialized AesGcmKey-proto.
     *
     */
    private static getKeyProtoFromKeyData;
    static register(): void;
}
export {};
