import { RSAUtils } from './RSA';
import { AESUtils } from './AES';
import { ShamirClass } from './shamir';
import { HMACUtils } from './HMACUtils';
export interface CryptoPrimitives {
    readonly shamir: ShamirClass;
    readonly RSA: RSAUtils;
    readonly AES: AESUtils;
    readonly HMAC: HMACUtils;
    /**
     * Generates a UUID using a cryptographically secure random number generator.
     */
    randomUuid(): string;
    /**
     * @param data some data
     * @return the sha256 hash of {@link data}
     */
    sha256(data: ArrayBuffer | Uint8Array): Promise<ArrayBuffer>;
    sha512(data: ArrayBuffer | Uint8Array): Promise<ArrayBuffer>;
    /**
     * @param n how many bytes to generate
     * @return an array with n random bytes
     */
    randomBytes(n: number): Uint8Array;
}
/**
 * Gives access to cryptographic primitives.
 */
export declare class WebCryptoPrimitives implements CryptoPrimitives {
    private readonly _rsa;
    private readonly _aes;
    private readonly _shamir;
    private readonly _crypto;
    private readonly _hmac;
    get crypto(): Crypto;
    get shamir(): ShamirClass;
    get RSA(): RSAUtils;
    get AES(): AESUtils;
    get HMAC(): HMACUtils;
    constructor(crypto?: Crypto);
    randomUuid(): string;
    sha256(data: ArrayBuffer | Uint8Array): Promise<ArrayBuffer>;
    sha512(data: ArrayBuffer | Uint8Array): Promise<ArrayBuffer>;
    randomBytes(n: number): Uint8Array;
}
