import { PropertyOperations } from "../../../hackle/property/PropertyOperations"; import { HackleUser, User } from "../model/model"; import { UserListener } from "./UserListener"; import { Synchronizer } from "../sync/Synchronizer"; import { Updated } from "../util/Updated"; export interface UserManager extends Synchronizer { readonly currentUser: User; addListener(listener: UserListener): void; resolve(user?: User | string): HackleUser; toHackleUser(user: User): HackleUser; setUser(user: User): Updated; setUserId(userId: string | undefined): Updated; setDeviceId(deviceId: string): Updated; updateUserProperties(operations: PropertyOperations): Updated; resetUser(): Updated; syncIfNeeded(updated: Updated): Promise; } export declare const isSameUser: (a: User | null, b: User) => boolean; export declare const mergeUsers: (oldUser: User, newUser: User) => User;