/**
 *
 * 2key-ratchet
 * Copyright (c) 2016 Peculiar Ventures, Inc
 * Based on https://whispersystems.org/docs/specifications/doubleratchet/ and
 * https://whispersystems.org/docs/specifications/x3dh/ by Open Whisper Systems
 *
 */
import { ECDHPrivateKey, ECKeyType } from "../type";
import { IECKeyPair } from "./key_pair";
import { ECPublicKey } from "./public_key";
export declare class Curve {
    static NAMED_CURVE: string;
    static DIGEST_ALGORITHM: string;
    /**
     * Generates new EC key pair
     *
     * @static
     * @param {ECKeyType} type type of EC key. ECDSA | ECDH
     * @returns
     *
     * @memberOf Curve
     */
    static generateKeyPair(type: ECKeyType, extractable: boolean): Promise<IECKeyPair>;
    /**
     * Derives 32 bytes from EC keys
     *
     * @static
     * @param {ECDHPrivateKey} privateKey EC private key
     * @param {ECPublicKey} publicKey EC public key
     * @returns
     *
     * @memberOf Curve
     */
    static deriveBytes(privateKey: ECDHPrivateKey, publicKey: ECPublicKey): PromiseLike<ArrayBuffer>;
    /**
     * Verifies signature
     *
     * @static
     * @param {ECPublicKey} signingKey
     * @param {ArrayBuffer} message
     * @param {ArrayBuffer} signature
     * @returns
     *
     * @memberOf Curve
     */
    static verify(signingKey: ECPublicKey, message: ArrayBuffer, signature: ArrayBuffer): PromiseLike<boolean>;
    /**
     * Calculates signature
     *
     * @static
     * @param {ECDHPrivateKey} signingKey
     * @param {ArrayBuffer} message
     * @returns
     *
     * @memberOf Curve
     */
    static sign(signingKey: ECDHPrivateKey, message: ArrayBuffer): Promise<ArrayBuffer>;
    static ecKeyPairToJson(key: IECKeyPair): Promise<CryptoKeyPair>;
    static ecKeyPairFromJson(keys: CryptoKeyPair): Promise<IECKeyPair>;
}
