import { Observable } from "rxjs"; import { SymmetricCryptoKey } from "../../models/domain/symmetric-crypto-key"; import { AuthRequestPushNotification } from "../../models/response/notification.response"; import { AuthenticationStatus } from "../enums/authentication-status"; import { AuthResult } from "../models/domain/auth-result"; import { UserApiLogInCredentials, PasswordLogInCredentials, SsoLogInCredentials, PasswordlessLogInCredentials, } from "../models/domain/log-in-credentials"; import { TokenTwoFactorRequest } from "../models/request/identity-token/token-two-factor.request"; import { AuthRequestResponse } from "../models/response/auth-request.response"; export abstract class AuthService { masterPasswordHash: string; email: string; accessCode: string; authRequestId: string; ssoEmail2FaSessionToken: string; logIn: ( credentials: | UserApiLogInCredentials | PasswordLogInCredentials | SsoLogInCredentials | PasswordlessLogInCredentials ) => Promise; logInTwoFactor: ( twoFactor: TokenTwoFactorRequest, captchaResponse: string ) => Promise; logOut: (callback: () => void) => void; makePreloginKey: (masterPassword: string, email: string) => Promise; authingWithUserApiKey: () => boolean; authingWithSso: () => boolean; authingWithPassword: () => boolean; authingWithPasswordless: () => boolean; getAuthStatus: (userId?: string) => Promise; authResponsePushNotification: (notification: AuthRequestPushNotification) => Promise; passwordlessLogin: ( id: string, key: string, requestApproved: boolean ) => Promise; getPushNotificationObs$: () => Observable; }