/// <reference types="node" />
import DecryptionElGamal from './decryption';
import EncryptionElGamal from './encryption';
import { BigInteger as BigInt } from 'jsbn';
import EncryptedValue from './encryptedValue';
import DecryptedValue from './decryptedValue';
import BN from 'bn.js';
export { ElGamal, EncryptionElGamal, DecryptionElGamal, DecryptedValue, EncryptedValue };
export declare function createEncryptionKeypair(primeBits?: number): {
    publicKey: Buffer;
    privateKey: Buffer;
};
export declare function encodePublicKey(prime: BigInt, generator: BigInt, publicKey: BigInt): Buffer;
export declare function decodePublicKey(der: Buffer): {
    p: BN;
    g: BN;
    y: BN;
};
export declare function encodePrivateKey(prime: BigInt, generator: BigInt, y: BigInt, x: BigInt): Buffer;
export declare function decodePrivateKey(der: Buffer): {
    p: BN;
    g: BN;
    y: BN;
    x: BN;
};
export default class ElGamal {
    static generate(primeBits?: number): {
        p: any;
        g: any;
        y: any;
        x: any;
    };
    static fromPrivateKey(p: BigInt | string | number, g: BigInt | string | number, y: BigInt | string | number, x: BigInt | string | number): DecryptionElGamal;
    static fromPublicKey(p: BigInt | string | number, g: BigInt | string | number, y: BigInt | string | number): EncryptionElGamal;
}
