import { VirtualDeviceEncryptedRecoverySecretsSerialized } from "../device/virtual-device/VirtualDeviceEncryptedRecoverySecrets";
import { VirtualDevicePublicKeyBundleSerialized } from "../device/key-bundles/VirtualDeviceKeyBundle";
import { DevicePublicKeyBundle, DevicePublicKeyBundleSerialized } from "../device/key-bundles/DeviceKeyBundle";
import { VirtualDevice } from "../device/virtual-device/VirtualDevice";
import { Epoch } from "../EpochStorage";
export type OpenFirstEpochBody = {
    virtualDeviceId: string;
    virtualDeviceEncryptedRecoverySecrets: VirtualDeviceEncryptedRecoverySecretsSerialized;
    virtualDevicePublicKeyBundle: VirtualDevicePublicKeyBundleSerialized;
    devicePublicKeyBundle: DevicePublicKeyBundleSerialized;
    firstEpochMembershipProof: {
        epochDeviceMac: string;
        epochVirtualDeviceMac: string;
    };
};
export type OpenFirstEpochResponse = {
    deviceId: string;
    epochId: string;
};
export type OpenFirstEpochServerClient = {
    openFirstEpoch: (requestBody: OpenFirstEpochBody) => Promise<OpenFirstEpochResponse>;
};
export declare function openFirstEpoch(devicePublicKeyBundle: DevicePublicKeyBundle, virtualDeviceDecryptionKey: Uint8Array, virtualDevice: VirtualDevice, serverClient: OpenFirstEpochServerClient): Promise<{
    deviceId: string;
    firstEpoch: Epoch;
}>;
//# sourceMappingURL=open-first-epoch.d.ts.map