import { Token, CryptoProvider, Keys, LoginDetails, RegisterDetails, SecurityDetails, TwoFactorAuthQR } from './types'; import { UserSettings, UUID } from '../shared/types/userSettings'; import { TeamsSettings } from '../shared/types/teams'; import { ApiSecurity, ApiUrl, AppDetails } from '../shared'; export * from './types'; export declare class Auth { private readonly client; private readonly appDetails; private readonly apiSecurity?; private readonly apiUrl; static client(apiUrl: ApiUrl, appDetails: AppDetails, apiSecurity?: ApiSecurity): Auth; private constructor(); /** * Tries to register a new user * @param registerDetails */ register(registerDetails: RegisterDetails): Promise<{ token: Token; user: Omit & { referralCode: string; }; uuid: UUID; }>; /** * Tries to log in a user given its login details * @param details * @param cryptoProvider */ login(details: LoginDetails, cryptoProvider: CryptoProvider): Promise<{ token: Token; newToken: Token; user: UserSettings; userTeam: TeamsSettings | null; }>; /** * Updates the asymmetric keys * @param keys * @param token */ updateKeys(keys: Keys, token: Token): Promise; /** * Returns general security details * @param email */ securityDetails(email: string): Promise; /** * Generates a new TwoFactorAuth code */ generateTwoFactorAuthQR(): Promise; /** * Disables TwoFactorAuthentication * @param pass * @param code */ disableTwoFactorAuth(pass: string, code: string): Promise; /** * Store TwoFactorAuthentication details * @param backupKey * @param code */ storeTwoFactorAuthKey(backupKey: string, code: string): Promise; /** * Sends request to send the email to delete the account * @param email */ sendDeactivationEmail(email: string): Promise; /** * Confirms the account deactivation * @param token */ confirmDeactivation(token: string): Promise; /** * Checks if the password is correct for this email * @param email * @param hashedPassword * @returns */ areCredentialsCorrect(email: string, hashedPassword: string): Promise; private basicHeaders; private headersWithToken; }