import { AbstractEThree } from '@virgilsecurity/e3kit-base';
import { ICard, IPublicKey, EThreeInitializeOptions, EThreeCtorOptions, EncryptFileOptions, DecryptFileOptions, LookupResult, FindUsersResult } from './types';
export declare class EThree extends AbstractEThree {
    /**
     * @hidden
     * @param identity - Identity of the current user.
     */
    constructor(identity: string, options: EThreeCtorOptions);
    /**
     * Initialize a new instance of EThree which tied to specific user.
     * @param getToken - Function that receive JWT.
     */
    static initialize(getToken: () => Promise<string>, options?: EThreeInitializeOptions): Promise<EThree>;
    /**
     * Signs and encrypts File or Blob for recipient public key or `LookupResult` dictionary for multiple
     * recipients. If there is no recipient and the message is encrypted for the current user, omit the
     * public key parameter. You can define chunk size and a callback, that will be invoked on each chunk.
     *
     * The file will be read twice during this method execution:
     * 1. To calculate the signature of the plaintext file.
     * 2. To encrypt the file with encoded signature.
     */
    encryptFile(file: File | Blob, recipients?: ICard | FindUsersResult | IPublicKey | LookupResult, options?: EncryptFileOptions): Promise<File | Blob>;
    /**
     * Decrypts and verifies integrity of File or Blob for recipient public key. If there is no recipient
     * and the message is encrypted for the current user, omit the public key parameter. You can define
     * chunk size and a callback, that will be invoked on each chunk.
     *
     * The file will be read twice during this method execution:
     * 1. To decrypt encrypted file.
     * 2. To verify the validity of the signature over the decrypted file for the public key.
     */
    decryptFile(file: File | Blob, senderCardOrPublicKey?: IPublicKey, options?: DecryptFileOptions): Promise<File | Blob>;
    /**
     * @hidden
     */
    private static prepareConstructorParams;
    /**
     * @hidden
     */
    protected isPublicKey(publicKey: IPublicKey): boolean;
    /**
     * @hidden
     */
    private toData;
}
