/**
 * @license
 * Copyright 2020 Google LLC
 * SPDX-License-Identifier: Apache-2.0
 */
import * as PrimitiveSet from './primitive_set';
import { Constructor } from './util';
/**
 * Basic interface for wrapping a primitive.
 *
 * A PrimitiveSet can be wrapped by a single primitive in order to fulfil a
 * cryptographic task. This is done by the PrimitiveWrapper. Whenever a new
 * primitive type is added to Tink, the user should define a new
 * PrimitiveWrapper and register it with the Registry.
 */
export interface PrimitiveWrapper<P> {
    /**
     * Wraps a PrimitiveSet and returns a single instance.
     *
     */
    wrap(primitiveSet: PrimitiveSet.PrimitiveSet<P>): P;
    /**
     * Returns the type of the managed primitive. Used for internal management.
     *
     */
    getPrimitiveType(): Constructor<P>;
}
