import { CipherKey } from 'crypto';
import { StreamMessageAESEncrypted } from '../protocol/StreamMessage';
import { GroupKey } from './GroupKey';
import { AsymmetricEncryptionType } from '@streamr/trackerless-network';
export declare const INITIALIZATION_VECTOR_LENGTH = 16;
export declare class EncryptionUtil {
    /**
     * Public API for asymmetric encryption, unified interface across the different AsymmetricEncryptionTypes
     */
    static encryptForPublicKey(plaintext: Uint8Array, publicKey: Uint8Array, type: AsymmetricEncryptionType): Promise<Buffer>;
    static decryptWithPrivateKey(cipher: Uint8Array, privateKey: Uint8Array, type: AsymmetricEncryptionType): Promise<Buffer>;
    /**
     * RSA
     */
    private static toRSAPublicKeyString;
    private static toRSAPrivateKeyString;
    private static encryptWithRSAPublicKey;
    private static decryptWithRSAPrivateKey;
    /**
     * ML-KEM
     */
    private static deriveAESWrapperKey;
    private static encryptWithMLKEMPublicKey;
    private static decryptWithMLKEMPrivateKey;
    static encryptWithAES(data: Uint8Array, cipherKey: CipherKey): Uint8Array;
    static decryptWithAES(cipher: Uint8Array, cipherKey: CipherKey): Buffer;
    static decryptStreamMessage(streamMessage: StreamMessageAESEncrypted, groupKey: GroupKey): [Uint8Array, GroupKey?] | never;
}
