import { ISecretStorageKeyInfo } from "./api";
import { Crypto } from "./index";
import { ISignatures } from "../@types/signed";
export interface IDehydratedDevice {
    device_id: string;
    device_data: ISecretStorageKeyInfo & {
        algorithm: string;
        account: string;
    };
}
export interface IDehydratedDeviceKeyInfo {
    passphrase?: string;
}
export interface IDeviceKeys {
    algorithms: Array<string>;
    device_id: string;
    user_id: string;
    keys: Record<string, string>;
    signatures?: ISignatures;
}
export interface IOneTimeKey {
    key: string;
    fallback?: boolean;
    signatures?: ISignatures;
}
export declare const DEHYDRATION_ALGORITHM = "org.matrix.msc2697.v1.olm.libolm_pickle";
export declare class DehydrationManager {
    private readonly crypto;
    private inProgress;
    private timeoutId;
    private key?;
    private keyInfo?;
    private deviceDisplayName?;
    constructor(crypto: Crypto);
    getDehydrationKeyFromCache(): Promise<void>;
    /** set the key, and queue periodic dehydration to the server in the background */
    setKeyAndQueueDehydration(key: Uint8Array, keyInfo?: {
        [props: string]: any;
    }, deviceDisplayName?: string): Promise<void>;
    setKey(key: Uint8Array, keyInfo?: {
        [props: string]: any;
    }, deviceDisplayName?: string): Promise<boolean | undefined>;
    /** returns the device id of the newly created dehydrated device */
    dehydrateDevice(): Promise<string | undefined>;
    stop(): void;
}
//# sourceMappingURL=dehydration.d.ts.map