import { IData, IGroup } from './db'; export interface ISigned { signature?: string; signer?: string; } export interface IDevice { id: string; userId: string; app: string; name?: string; expires?: number; pushSubscription?: { endpoint: string; expirationTime: number; keys: any; }; subscriptionExpires?: number; } export interface IUser extends ISigned, IData { type: 'User'; group: 'users'; name: string; publicKey: string; publicBoxKey: string; devices?: { [deviceId: string]: IDevice; }; } export declare function isUser(data: IData): data is IUser; export declare function newUser(name?: string): IUser & { secretKey: string; }; export declare let publicBoxKey: string; export declare let userId: string; export declare function init(config?: { id: string; secretKey: string; name?: string; iconUrl?: string; dontWarn?: boolean; dontStore?: boolean; }): Promise; export declare function hydrateUser(id: string, secretKey: string, displayName?: string): IUser; export declare function signMessageWithSecretKey(msg: string, secretKey: string): string; export interface IDataBox { fromUserId: string; contents: string; nonce: string; } export declare function boxDataWithKeys(data: any, toPublicBoxKey: string, fromSecretKey: string, fromUserId: string): IDataBox; export declare function getSignature(msg: string, secretKey: string): string; export declare function signObjectWithIdAndSecretKey(obj: T, userId: string, secretKey: string): T & ISigned; export declare function signMessage(msg: string): string; export declare function signObject(obj: T): T & ISigned; export declare function boxDataForPublicKey(data: any, toPublicBoxKey: string): IDataBox; export declare function boxDataForUser(data: any, toUserId: string): Promise; export declare function openMessage(signedMsg: string, publicKey: string): string; export declare function openBoxWithSecretKey(box: IDataBox, fromPublicBoxKey: string, toSecretKey: string): any; export declare function openBox(box: IDataBox): Promise; export declare function verifySignature(message: string, signature: string, publicKey: string): boolean; export declare function verifySignedObject(obj: ISigned, publicKey: string): void; export declare function verifySigner(obj: ISigned & { id?: string; }): Promise; export declare function keysEqual(publicKey1: string, publicKey2: string): boolean; export declare function newData(fields?: Partial & T): IData & T; export declare function newGroup(fields?: Partial): IGroup; export declare function generateRandomSecureString(): string;