import { VirtualDeviceEncryptedRecoverySecretsSerialized } from "./VirtualDeviceEncryptedRecoverySecrets";
import { VirtualDeviceKeyBundle, VirtualDevicePublicKeyBundleSerialized } from "../key-bundles/VirtualDeviceKeyBundle";
export type GetVirtualDeviceRecoverySecretsResponse = {
    epochId: string;
    virtualDeviceEncryptedRecoverySecrets: VirtualDeviceEncryptedRecoverySecretsSerialized;
    expectedVirtualDevicePublicKeyBundle: VirtualDevicePublicKeyBundleSerialized;
};
export type GetVirtualDeviceRecoverySecretsBody = {
    virtualDeviceId: string;
};
export type GetVirtualDeviceRecoverySecretsServerClient = {
    getVirtualDeviceRecoverySecrets: (getVirtualDeviceRecoverySecretsBody: GetVirtualDeviceRecoverySecretsBody) => Promise<GetVirtualDeviceRecoverySecretsResponse>;
};
export declare class VirtualDevice {
    readonly id: Uint8Array;
    readonly keyBundle: VirtualDeviceKeyBundle;
    private constructor();
    static initialize(userId: string): {
        virtualDevice: VirtualDevice;
        virtualDeviceDecryptionKey: Uint8Array<ArrayBufferLike>;
        recoveryCode: string;
    };
    static fromRecoveryCode(userId: string, recoveryCode: string, webClient: GetVirtualDeviceRecoverySecretsServerClient): Promise<{
        virtualDevice: VirtualDevice;
        epoch: {
            sequenceId: string;
            rootKey: Uint8Array;
            id: string;
        };
    }>;
}
export declare const VERSION_NUMBER = 1;
export declare const IDENTIFIER = 0;
export declare class InvalidRecoveryCodeFormatError extends Error {
    constructor(message: string);
}
//# sourceMappingURL=VirtualDevice.d.ts.map