import { EDHOC, EdhocCryptoManager, EdhocSuite, PublicPrivateTuple } from './edhoc';
import { RecoveredSignatureType } from '@noble/curves/abstract/weierstrass';
type KeyUtils = {
    utils: {
        randomPrivateKey: () => Uint8Array;
    };
    getPublicKey: (privateKey: Uint8Array, compressed?: boolean) => Uint8Array;
    getSharedSecret?: (privateKey: Uint8Array, publicKey: Uint8Array) => Uint8Array;
    sign?: (msg: Uint8Array, privateKey: Uint8Array) => Uint8Array | RecoveredSignatureType;
    verify?: (signature: Uint8Array, msgHash: Uint8Array, publicKey: Uint8Array) => boolean;
};
export declare class DefaultEdhocCryptoManager implements EdhocCryptoManager {
    generateKeyPair(edhoc: EDHOC): PublicPrivateTuple;
    keyAgreement(edhoc: EDHOC, privateKey: Buffer, peerPublicKey: Buffer): Buffer;
    sign(edhoc: EDHOC, privateKey: Buffer, input: Buffer): Buffer;
    verify(edhoc: EDHOC, publicKey: Buffer, input: Buffer, signature: Buffer): Promise<boolean>;
    hkdfExtract(_edhoc: EDHOC, ikm: Buffer, salt: Buffer): Buffer;
    hkdfExpand(_edhoc: EDHOC, prk: Buffer, info: Buffer, length: number): Buffer;
    encrypt(edhoc: EDHOC, key: Buffer, nonce: Buffer, aad: Buffer, plaintext: Buffer): Promise<Buffer>;
    decrypt(edhoc: EDHOC, key: Buffer, nonce: Buffer, aad: Buffer, ciphertext: Buffer): Promise<Buffer>;
    hash(_edhoc: EDHOC, input: Buffer): Promise<Buffer>;
    private formatToBeSigned;
    private formatPublicKey;
    protected getCurveForSignature(suite: EdhocSuite): KeyUtils;
    protected getCurveForKeyAgreement(suite: EdhocSuite): KeyUtils;
    private getTagLength;
    private getAlgorithm;
}
export {};
//# sourceMappingURL=crypto.d.ts.map