import { Observable } from 'rxjs'; import { AuthProvider } from './authprovider.enum'; import { ICredentials } from './main.interface'; import { User, AuthProvider as FirebaseAuthProvider, AuthCredential } from '@firebase/auth-types'; export declare type IFirebaseProvider = IAnalyticsProvider & ICrashlyticsProvider & IPerformanceProvider; export interface IAnalyticsProvider { logEvent(name: string, params?: { [key: string]: any; }): Promise; setScreenName(screenName: string, screenClass?: string): Promise; setUserId(userId: string | null): void; } export interface ICrashlyticsProvider { recordException(_options: iOSException | AndroidException): Promise; addLogMessage(message: string): Promise; setUserId(uid: string | null): void; } export interface ICredentialFactoryProvider { isProviderSupported(provider: AuthProvider): Promise; getCredential(provider: AuthProvider): Promise; signOut(): Promise; } export interface IPerformanceProvider { createTrace(label: string): Promise; } export interface IPerformanceTrace { start: () => void; stop: () => void; putAttribute: (key: string, value: any) => void; } export interface ContextOptions { key: string; value: string | number | boolean; type: 'string' | 'long' | 'double' | 'boolean' | 'int' | 'float'; } export interface iOSException { code?: number; domain?: string; message: string; } export interface AndroidException { message: string; } export interface IAuthProcessService { listenToUserEvents(): void; resetPassword(email: string): Promise; signInWith(provider: AuthProvider, credentials?: ICredentials): Promise; linkToProvider(provider: AuthProvider): Promise; signInOrLinkWithProvider(provider: AuthProvider): Promise; signUp(displayName: string, credentials: ICredentials): Promise; sendNewVerificationEmail(): Promise; signOut(): Promise; updateProfile(displayName: string, photoURL: string | null): Promise; getUserPhotoUrl(): Observable; getPhotoPath(image: string): string; signInWithPhoneNumber(): Promise; reloadUserInfo(): Promise; getAuthProvider(provider: AuthProvider): FirebaseAuthProvider; } export interface IAuthHooksService { prepareMergeSource?: { (sourceUser: User): Promise; }; applyMergeToTarget?: { (targetUser: User, context: any): Promise; }; beforeDelete?: { (user: User): Promise; }; }