/// <reference types="node" />
import { VerificationBase as Base } from "./Base";
import { VerificationRequest } from "./request/VerificationRequest";
import { MatrixClient } from "../../client";
import { IVerificationChannel } from "./request/Channel";
import { MatrixEvent } from "../../models/event";
import { ShowQrCodeCallbacks, VerifierEvent } from "../../crypto-api/verification";
import { VerificationMethod } from "../../types";
export declare const SHOW_QR_CODE_METHOD = VerificationMethod.ShowQrCode;
export declare const SCAN_QR_CODE_METHOD = VerificationMethod.ScanQrCode;
/** @deprecated use VerifierEvent */
export type QrCodeEvent = VerifierEvent;
/** @deprecated use VerifierEvent */
export declare const QrCodeEvent: typeof VerifierEvent;
/** @deprecated Avoid referencing this class directly; instead use {@link Crypto.Verifier}. */
export declare class ReciprocateQRCode extends Base {
    reciprocateQREvent?: ShowQrCodeCallbacks;
    static factory(channel: IVerificationChannel, baseApis: MatrixClient, userId: string, deviceId: string, startEvent: MatrixEvent, request: VerificationRequest): ReciprocateQRCode;
    static get NAME(): string;
    protected doVerification: () => Promise<void>;
    getReciprocateQrCodeCallbacks(): ShowQrCodeCallbacks | null;
}
declare enum Mode {
    VerifyOtherUser = 0,// Verifying someone who isn't us
    VerifySelfTrusted = 1,// We trust the master key
    VerifySelfUntrusted = 2
}
export declare class QRCodeData {
    readonly mode: Mode;
    private readonly sharedSecret;
    readonly otherUserMasterKey: string | null;
    readonly otherDeviceKey: string | null;
    readonly myMasterKey: string | null;
    private readonly buffer;
    constructor(mode: Mode, sharedSecret: string, otherUserMasterKey: string | null, otherDeviceKey: string | null, myMasterKey: string | null, buffer: Buffer);
    static create(request: VerificationRequest, client: MatrixClient): Promise<QRCodeData>;
    /**
     * The unpadded base64 encoded shared secret.
     */
    get encodedSharedSecret(): string;
    getBuffer(): Buffer;
    private static generateSharedSecret;
    private static getOtherDeviceKey;
    private static determineMode;
    private static generateQrData;
    private static generateBuffer;
}
export {};
//# sourceMappingURL=QRCode.d.ts.map