///
import { SupportedJsonWebEncryptionCompressionAlgorithm } from './types/supported-jsonwebencryption-compression-algorithm';
/**
* Abstract Base Class for the JSON Web Encryption Compression Algorithms.
*
* All JSON Web Encryption Compression Algorithms supported by Guarani **MUST** extend this base class
* and implement its abstract methods.
*/
export declare abstract class JsonWebEncryptionCompressionAlgorithm {
/**
* Name of the JSON Web Encryption Compression Algorithm.
*/
protected readonly algorithm: SupportedJsonWebEncryptionCompressionAlgorithm;
/**
* Instantiates a new JSON Web Encryption Compression Algorithm to Compress and Decompress a Plaintext.
*
* @param algorithm Name of the JSON Web Encryption Compression Algorithm.
*/
constructor(algorithm: SupportedJsonWebEncryptionCompressionAlgorithm);
/**
* Compresses the provided Plaintext before Encryption.
*
* @param plaintext Plaintext to be Compressed.
* @returns Compressed Plaintext.
*/
abstract compress(plaintext: Buffer): Promise;
/**
* Decompresses the provided Compressed Plaintext after Decryption.
*
* @param plaintext Compressed Plaintext to be Decompressed.
* @returns Decompressed Plaintext.
*/
abstract decompress(plaintext: Buffer): Promise;
}