import * as PGP from './pgp';
import { IConnectedUser, IFeeds, IMessageIPFSWithCID, IUser, walletType, IMessageIPFS, GroupInfoDTO } from '../../types';
import { ENV } from '../../constants';
interface IEncryptedRequest {
    message: string;
    encryptionType: 'PlainText' | 'pgp' | 'pgpv1:group';
    aesEncryptedSecret: string | null;
    signature: string;
}
export declare const encryptAndSign: ({ plainText, keys, privateKeyArmored, secretKey, }: {
    plainText: string;
    keys: Array<string>;
    privateKeyArmored: string;
    secretKey: string;
}) => Promise<{
    cipherText: string;
    encryptedSecret: string;
    signature: string;
    sigType: string;
    encType: string;
}>;
export declare const encryptAndSignCore: ({ plainText, keys, privateKeyArmored, secretKey, pgpHelper, }: {
    plainText: string;
    keys: Array<string>;
    privateKeyArmored: string;
    secretKey: string;
    pgpHelper: PGP.IPGPHelper;
}) => Promise<{
    cipherText: string;
    encryptedSecret: string;
    signature: string;
    sigType: string;
    encType: string;
}>;
export declare const signMessageWithPGP: ({ message, privateKeyArmored, }: {
    message: string;
    privateKeyArmored: string;
}) => Promise<{
    signature: string;
    sigType: string;
}>;
export declare const signMessageWithPGPCore: ({ message, privateKeyArmored, pgpHelper, }: {
    message: string;
    privateKeyArmored: string;
    pgpHelper: PGP.IPGPHelper;
}) => Promise<{
    signature: string;
    sigType: string;
}>;
export declare const decryptFeeds: ({ feeds, connectedUser, pgpPrivateKey, env, }: {
    feeds: IFeeds[];
    connectedUser: IUser;
    pgpPrivateKey?: string | undefined;
    env: ENV;
}) => Promise<IFeeds[]>;
export declare const getEncryptedRequest: (receiverAddress: string, senderCreatedUser: IConnectedUser, message: string, isGroup: boolean, env: ENV, group: GroupInfoDTO | null, secretKey: string) => Promise<IEncryptedRequest>;
export declare const getEncryptedRequestCore: (receiverAddress: string, senderCreatedUser: IConnectedUser, message: string, isGroup: boolean, env: ENV, group: GroupInfoDTO | null, secretKey: string, pgpHelper: PGP.IPGPHelper) => Promise<IEncryptedRequest>;
export declare const getEip191Signature: (wallet: walletType, message: string, version?: 'v1' | 'v2') => Promise<{
    signature: string;
    sigType: string;
    verificationProof?: undefined;
} | {
    verificationProof: string;
    signature?: undefined;
    sigType?: undefined;
}>;
export declare const getEip712Signature: (wallet: walletType, hash: string, isDomainEmpty: boolean) => Promise<{
    signature: string;
    sigType: string;
    verificationProof?: undefined;
} | {
    verificationProof: string;
    signature?: undefined;
    sigType?: undefined;
}>;
export declare function getDecryptedPrivateKey(wallet: walletType, user: any, address: string): Promise<string>;
/**
 * Decrypts and verifies a Push Chat Message
 * @param message encrypted chat message
 * @param pgpPublicKey pgp public key of signer of message - used for verification
 * @param pgpPrivateKey pgp private key of receiver - used for decryption
 */
export declare const decryptAndVerifyMessage: (message: IMessageIPFS | IMessageIPFSWithCID, pgpPublicKey: string, pgpPrivateKey: string, env: ENV) => Promise<IMessageIPFS | IMessageIPFSWithCID>;
export {};
